1
問題的標題可能會令人困惑。如果任何人有這個正確的術語,請編輯。 我有一個這樣的XML輸入文件:XSLT中的每個父節點分組
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="show.xsl"?>
<patients>
<patient>
<name>Joe</name>
<age>45</age>
<kids>
<kid>
<name>Ramsay</name>
<gender>M</gender>
</kid>
<kid>
<name>Eva</name>
<gender>F</gender>
</kid>
<kid>
<name>Arthas</name>
<gender>M</gender>
</kid>
</kids>
</patient>
<patient>
<name>Adam</name>
<age>34</age>
<kids>
<kid>
<name>Jon</name>
<gender>M</gender>
</kid>
<kid>
<name>Jane</name>
<gender>F</gender>
</kid>
<kid>
<name>Sunita</name>
<gender>F</gender>
</kid>
</kids>
</patient>
</patients>
我想類似這樣的輸出:
Name: Joe
Age: 45
Kids:
Boys:
Ramsay
Arthas
Girls:
Eva
Name: Adam
Age: 34
Kids:
Boys:
Jon
Girls:
Jane
Sunita
這裏是我使用XSL寫的XSLT:關鍵,但它給出錯誤的輸出它不能按照患者的方式進行分組。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="header" match="//kid" use="gender"/>
<xsl:template match="//patients/patient">
<xsl:value-of select="name"/>
<xsl:text xml:space="preserve">
</xsl:text>
<xsl:value-of select="age"/>
<xsl:text xml:space="preserve">
</xsl:text>
<xsl:text xml:space="preserve">Boys:
</xsl:text>
<xsl:for-each select="key('header', 'M')">
<xsl:value-of select="name"/>
<xsl:text xml:space="preserve">
</xsl:text>
</xsl:for-each>
<xsl:text xml:space="preserve">
</xsl:text>
<xsl:text xml:space="preserve">Girls:
</xsl:text>
<xsl:for-each select="key('header', 'F')">
<xsl:value-of select="name"/>
<xsl:text xml:space="preserve">
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我正在尋找一個解決方案,最好在XSLT 1.0中。
您的數據是否包含患者的唯一ID? –
您可以將名稱視爲唯一的ID。 –