Ich versuche, XSLT 2.0 zu verwenden, aber das Tag <xsl:value-of select=...>
gibt mir das erste Element nicht mehr. Ich bekomme alle Werte im XML. Wie kann ich das folgende XSLT für die Arbeit mit XSLT 2.0 konvertieren?Konvertierung von XSLT 1.0 zu 2.0 gibt keinen ersten Text von einem Tag
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="Data">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="Data/ABC">
<xsl:for-each select=".">
<Data xmlns="example.com">
<GEF>
<id><xsl:value-of select="id"/></id>
<time><xsl:value-of select="time"/></time>
<type>test</type>
</GEF>
</Data>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Wenn ich diese XML hatte:
<Data xmlns="example.com">
<ABC>
<id>2</id>
<time>125622</time>
</ABC>
</Data>
Wenn ich mit Hilfe von XSLT wurde 1,0, würde ich dieses:
<Data xmlns="example.com">
<GEF>
<id>2</id>
<time>125622</time>
<type>test</type>
</GEF>
</Data>
Normalerweise würde ich 2
und 125622
als Einzelstücke bekommen für jedes Tag in der XSLT. Nun erhält es jedoch nur die beiden Werte und gibt sie aus. Es druckt nicht einmal die Tags nach der Transformation. Was soll ich in 2.0 verwenden? Meine Suche hat nichts gebracht.
Dies ist, was ich mit 2,0 erhalten:
<Data xmlns="example.com">
2
125622
test
</Data>
Was ist das gewünschte Ergebnis zu bekommen? - Und warum hast du ' ' aber keine Vorlagen in diesem Modus? –
"Nun werden nur die beiden Werte abgerufen und ausgegeben. Die Tags werden nach der Umwandlung nicht einmal gedruckt." Es klingt so, als ob die Elemente in Ihrer XML-Eingabe in einem Namespace liegen und Ihre Vorlagen nicht angewendet werden. Gibt es irgendwelche 'xmlns =" ... "' auf dem 'Data' Element oder einem Vorfahren? –
Ihre zweite Vorlagenübereinstimmung sollte 'match =" ABC "' lauten. Da Sie die Übereinstimmung überqualifizieren, werden nur die Standardumwandlungsregeln angewendet, nämlich nur den Text der Elemente. Entferne 'Data /' und es sollte funktionieren. –