任何人都可以帮助我通过 xslt 获得正确的 Xpath 以进行适当的转换吗?
当我尝试使用 xslt 通过 xpath 转换 input.xml(document(input.xml)//track)
以获得所需的输出时,如下所述。
输入xml:如下所述
<mergingTracksBreakdownStructure>
<track id="10">
<mergedTrack id="10"/>
<mergedTrack id="11"/>
<mergedTrack id="12"/>
<track id="13">
<mergedTrack id="13"/>
<mergedTrack id="14"/>
<track id="15">
<mergedTrack id="15"/>
<mergedTrack id="16"/>
</track>
</track>
</track>
<track id="27">
<mergedTrack id="27"/>
</track>
<track id="30">
<mergedTrack id="30"/>
</track>
</mergingTracksBreakdownStructure>
需要输出 xml:如下所述
<mergingTracksBreakdownStructure>
<track id="10">
<mergedTrack id="10"/>
<mergedTrack id="11"/>
<mergedTrack id="12"/>
</track>
<track id="13">
<mergedTrack id="13"/>
<mergedTrack id="14"/>
</track>
<track id="15">
<mergedTrack id="15"/>
<mergedTrack id="16"/>
</track>
<track id="27">
<mergedTrack id="27"/>
</track>
<track id="30">
<mergedTrack id="30"/>
</track>
</mergingTracksBreakdownStructure>
XSLT 用于转换:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<xsl:result-document href="output.xml" method="xml">
<xsl:apply-templates select="document('input.xml')//track"/>
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>