Ich habe eine XML, so etwas wie dieses:XSLT regulären Ausdruck Sequenzen entfernen Text
<?xml version="1.0" encoding="UTF-8"?>
<earth>
<computer>
<parts>;;remove;;This should stay;;remove too;;This stay;;yeah also remove;;this stay </parts>
</computer>
</earth>
Ich möchte eine XSLT erstellen 2.0 verwandeln den gesamten Text zu entfernen, die beginnt und endet mit ;;
<?xml version="1.0" encoding="utf-8"?>
<earth>
<computer>
<parts>This should stay This stay this stay </parts>
</computer>
</earth>
Versuchen Sie, so etwas zu tun, aber kein Glück:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"
exclude-result-prefixes="fn">
<xsl:output encoding="utf-8" method="xml" indent="yes" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="parts">
<xsl:element name="parts" >
<xsl:value-of select="replace(., ';;.*;;','')" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
. * ist ein gieriger Treffer; es wird alle ";;" schlucken Begrenzer bis zum letzten. Sie könnten es durch eine nicht gierige Übereinstimmung ersetzen (. *?) Oder vermeiden Sie passende Semikola wie in der Lösung von @ michael.hor257k –