xsl - 如何获取多个相同名称的嵌套元素?

时间:2017-03-21 15:29:35

标签: xml xslt

有人知道我在这里缺少什么吗?我有一个导出,例如,由代码元素分解。我试图显示属于SiteDataSet的每个网站元素。有时候只有1个网站,有时候会有3个或更多。

这是xml

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<export>
    <run-date>03/20/2017
        <code>items
            <type>Job
                <number>9999999990-01</number>
                <SiteDataSet>
                    <Site>Accounting</Site>
                    <Site>Energy</Site>
                </SiteDataSet>
                <content><![CDATA[]]></content>
            </type>
        </code>
        <code>items2
            <type>Job
                <number>9999999910-01</number>
                <SiteDataSet>
                    <Site>Finance</Site>
                    <Site>Energy</Site>
                    <Site>Driving</Site>
                </SiteDataSet>
                <content><![CDATA[]]></content>
            </type>
        </code>
    </run-date>
</export>

这是xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.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="/*/*">
                <xsl:element name="Posting">
                        <xsl:for-each select="code/type">
                                <xsl:element name="Job">
                                        <xsl:element name="Number"><xsl:value-of select="translate(./*[local-name()='number'],'-','')"/></xsl:element>
                                        <xsl:element name="Sites"/>
                                </xsl:element>
                        </xsl:for-each>
                </xsl:element>
        </xsl:template>
</xsl:stylesheet>

这是输出xml

    <?xml version="1.0" encoding="utf-8"?>
    <Posting>
       <Job>
          <Number>999999999001</Number>
          <Sites/>
       </Job>
       <Job>
          <Number>999999991001</Number>
          <Sites/>
       </Job>
    </Posting>

1 个答案:

答案 0 :(得分:0)

我得到了它,所以可以关闭。

<xsl:element name="Sites">
    <xsl:for-each select="SiteDataSet/Site">
        <Site><xsl:value-of select="."/></Site>
    </xsl:for-each>
</xsl:element>