我是 XSLT 的新手,我仍在學習。我目前面臨一個問題,我需要將具有相同 ID 的節點組合在一起。具有相同 ID 的節點將具有不同的值,并且這些值也需要組合。
下面是我的初始示例 XML:
<OBR>
<row>
<ID>T084</ID>
<col2>Y</col2>
<col3></col3>
<col4></col4>
</row>
<row>
<ID>T084</ID>
<col2></col2>
<col3>Y</col3>
<col4></col4>
</row>
<row>
<ID>123456</ID>
<col2></col2>
<col3>Y</col3>
<col4></col4>
</row>
</OBR>
鑒于我需要用“N”填充空值,我想要的輸出是:
<OBR>
<row>
<ID>T084</ID>
<col2>Y</col2>
<col3>Y</col3>
<col4>N</col4>
</row>
<row>
<ID>125659</ID>
<col2>N</col2>
<col3>Y</col3>
<col4>N</col4>
</row>
</OBR>
任何人都可以指出我正確的方向嗎?先感謝您。
uj5u.com熱心網友回復:
看來您需要在兩個級別進行分組:
XSLT 2.0
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/OBR">
<xsl:copy>
<xsl:for-each-group select="row" group-by="ID">
<xsl:copy>
<xsl:for-each-group select="current-group()/*" group-by="name()">
<xsl:element name="{current-grouping-key()}">
<xsl:value-of select="(current-group()/text(), 'N')[1]"/>
</xsl:element>
</xsl:for-each-group>
</xsl:copy>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363087.html
上一篇:使用XPATH獲取節點位置以從同一棵樹中檢索另一個值
下一篇:XSLT從父元素向子節點添加鍵
