XSLT/XPath funktioniert nicht bei eigenem Namespace

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • XSLT/XPath funktioniert nicht bei eigenem Namespace

    Hallo,

    ich habe unten folgende Dateien sowie Ausgabe und die gewünschte Ausgabe zusammengestellt, ich hab keine Ahnung warum das nicht funktioniert. Hoffe hier kann mir jemand helfen.

    XML-File:

    Quellcode

    1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    2. <Document xmlns="<xsl:for-each select="Category/list/dict/array/dict">
    3. <xsl:element name="list">
    4. <xsl:element name="name"><xsl:value-of select="value[1]" /></xsl:element>
    5. <xsl:element name="version"><xsl:value-of select="value[2]" /></xsl:element>
    6. </xsl:element>
    7. </xsl:for-each>
    8. </xsl:element>
    9. </xsl:template>
    10. </xsl:stylesheet>



    Ergebnis:

    Quellcode

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <lists />


    Ich weiss nichtmehr was ich noch probieren soll, finde keine Lösung. Sobald ich aus der XML das xmlns im Document Tag entferne, funktioniert es ohne Probleme, kann aber die XML leider nicht verändern.

    Edit:

    Mal wieder zu früh geschrien. Die Lösung ist den Namespace vor jedem Element aus dem XML-Dokument im XSLT-File anzugeben.

    Die XSLT muss also so aussehen:

    Quellcode

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    3. xmlns:myxml="http://www.somesite.com/myxml/">
    4. <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
    5. <xsl:template match="/myxml:*">
    6. <xsl:element name="lists">
    7. <xsl:for-each select="myxml:Category/myxml:list/myxml:dict/myxml:array/myxml:dict">
    8. <xsl:element name="list">
    9. <xsl:element name="name"><xsl:value-of select="myxml:value[1]" /></xsl:element>
    10. <xsl:element name="version"><xsl:value-of select="myxml:value[2]" /></xsl:element>
    11. </xsl:element>
    12. </xsl:for-each>
    13. </xsl:element>
    14. </xsl:template>
    15. </xsl:stylesheet>
    Alles anzeigen

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von FelixD ()