Xml 在不重复xslt 1.0的情况下使所有元素都不同
从我的XML代码中,我希望一次获取所有项目,而不重复。 我的Xml代码是:Xml 在不重复xslt 1.0的情况下使所有元素都不同,xml,xslt-1.0,Xml,Xslt 1.0,从我的XML代码中,我希望一次获取所有项目,而不重复。 我的Xml代码是: <NTC_LIGHTLISTPRODUCT> <IMMUTABLE_ID>9814</IMMUTABLE_ID> <LIGHT_DESCRIPTION_LIST> <LIGHT_DESCRIPTION>
<NTC_LIGHTLISTPRODUCT>
<IMMUTABLE_ID>9814</IMMUTABLE_ID>
<LIGHT_DESCRIPTION_LIST>
<LIGHT_DESCRIPTION>
<LIGHT_SUPPORT_HEIGHT>198</LIGHT_SUPPORT_HEIGHT>
</LIGHT_DESCRIPTION>
<LIGHT_DESCRIPTION>
<LIGHT_SUPPORT_HEIGHT>166</LIGHT_SUPPORT_HEIGHT>
</LIGHT_DESCRIPTION>
<LIGHT_DESCRIPTION>
<LIGHT_SUPPORT_HEIGHT>122</LIGHT_SUPPORT_HEIGHT>
</LIGHT_DESCRIPTION>
<LIGHT_DESCRIPTION>
<LIGHT_SUPPORT_HEIGHT>76</LIGHT_SUPPORT_HEIGHT>
</LIGHT_DESCRIPTION>
<LIGHT_DESCRIPTION>
<LIGHT_SUPPORT_HEIGHT>31</LIGHT_SUPPORT_HEIGHT>
</LIGHT_DESCRIPTION>
<LIGHT_DESCRIPTION>
<LIGHT_SUPPORT_HEIGHT>31</LIGHT_SUPPORT_HEIGHT>
</LIGHT_DESCRIPTION>
</LIGHT_DESCRIPTION_LIST>
<NTC_LIGHTLISTPRODUCT>
9814
198
166
122
76
31
31
我要序列号:198 166 122 76 31
我编写了以下代码xslt 1.0,但无法得到正确的结果:
<xsl:for-each select="LIGHT_DESCRIPTION">
<xsl:for-each select="LIGHT_SUPPORT_HEIGHT">
<xsl:if test=".=not(preceding::LIGHT_SUPPORT_HEIGHT[1][preceding::IMMUTABLE_ID=$EF])">
<span style="font-size:9pt; text-align:center; ">
<xsl:value-of select="."/>
</span>
</xsl:if>
</xsl:for-each>
EF是当前节点的一个变量(不可变ID),我使用它来保持在这个节点内
“你”能给我更多的指示吗?感谢XSLT 1.0中对此类问题进行分组的标准方法称为“Muenchian分组”-本质上是定义一个键,将应视为“相同”的节点分组,然后使用
生成id的技巧来处理每个组中的第一个节点
在这种情况下,分组约束是LIGHT\u SUPPORT\u HEIGHT
值本身和包含NTC\u LIGHTLISTPRODUCT
的不可变\u ID
的值的组合:
<xsl:key name="supportHeightKey" match="LIGHT_SUPPORT_HEIGHT"
use="concat(., '|', ancestor::NTC_LIGHTLISTPRODUCT[1]/IMMUTABLE_ID)" />
现在,您可以使用
<!-- assuming the current context is LIGHT_DESCRIPTION_LIST -->
<xsl:for-each select="LIGHT_DESCRIPTION/LIGHT_SUPPORT_HEIGHT[
generate-id() = generate-id(
key('supportHeightKey', concat(., '|', current()/../IMMUTABLE_ID))[1])]">
<span style="font-size:9pt; text-align:center; ">
<xsl:value-of select="."/>
</span>
</xsl:for-each>
XSLT 1.0中对此类问题进行分组的标准方法称为“Muenchian分组”——本质上是定义一个键,将应视为“相同”的节点分组,然后使用生成id的技巧来处理每个组中的第一个节点
在这种情况下,分组约束是LIGHT\u SUPPORT\u HEIGHT
值本身和包含NTC\u LIGHTLISTPRODUCT
的不可变\u ID
的值的组合:
<xsl:key name="supportHeightKey" match="LIGHT_SUPPORT_HEIGHT"
use="concat(., '|', ancestor::NTC_LIGHTLISTPRODUCT[1]/IMMUTABLE_ID)" />
现在,您可以使用
<!-- assuming the current context is LIGHT_DESCRIPTION_LIST -->
<xsl:for-each select="LIGHT_DESCRIPTION/LIGHT_SUPPORT_HEIGHT[
generate-id() = generate-id(
key('supportHeightKey', concat(., '|', current()/../IMMUTABLE_ID))[1])]">
<span style="font-size:9pt; text-align:center; ">
<xsl:value-of select="."/>
</span>
</xsl:for-each>
XSLT 1.0中对此类问题进行分组的标准方法称为“Muenchian分组”——本质上是定义一个键,将应视为“相同”的节点分组,然后使用生成id的技巧来处理每个组中的第一个节点
在这种情况下,分组约束是LIGHT\u SUPPORT\u HEIGHT
值本身和包含NTC\u LIGHTLISTPRODUCT
的不可变\u ID
的值的组合:
<xsl:key name="supportHeightKey" match="LIGHT_SUPPORT_HEIGHT"
use="concat(., '|', ancestor::NTC_LIGHTLISTPRODUCT[1]/IMMUTABLE_ID)" />
现在,您可以使用
<!-- assuming the current context is LIGHT_DESCRIPTION_LIST -->
<xsl:for-each select="LIGHT_DESCRIPTION/LIGHT_SUPPORT_HEIGHT[
generate-id() = generate-id(
key('supportHeightKey', concat(., '|', current()/../IMMUTABLE_ID))[1])]">
<span style="font-size:9pt; text-align:center; ">
<xsl:value-of select="."/>
</span>
</xsl:for-each>
XSLT 1.0中对此类问题进行分组的标准方法称为“Muenchian分组”——本质上是定义一个键,将应视为“相同”的节点分组,然后使用生成id的技巧来处理每个组中的第一个节点
在这种情况下,分组约束是LIGHT\u SUPPORT\u HEIGHT
值本身和包含NTC\u LIGHTLISTPRODUCT
的不可变\u ID
的值的组合:
<xsl:key name="supportHeightKey" match="LIGHT_SUPPORT_HEIGHT"
use="concat(., '|', ancestor::NTC_LIGHTLISTPRODUCT[1]/IMMUTABLE_ID)" />
现在,您可以使用
<!-- assuming the current context is LIGHT_DESCRIPTION_LIST -->
<xsl:for-each select="LIGHT_DESCRIPTION/LIGHT_SUPPORT_HEIGHT[
generate-id() = generate-id(
key('supportHeightKey', concat(., '|', current()/../IMMUTABLE_ID))[1])]">
<span style="font-size:9pt; text-align:center; ">
<xsl:value-of select="."/>
</span>
</xsl:for-each>
您的代码片段与示例XML不匹配-不可变\u ID从何而来?不可变\u ID是标识每个节点的变量。。。此节点说明有很多。您的代码片段与示例XML不匹配-IMMUTABLE\u ID
来自何处?IMMUTABLE\u ID是标识每个节点的变量。。。此节点说明有很多。您的代码片段与示例XML不匹配-IMMUTABLE\u ID
来自何处?IMMUTABLE\u ID是标识每个节点的变量。。。此节点说明有很多。您的代码片段与示例XML不匹配-IMMUTABLE\u ID
来自何处?IMMUTABLE\u ID是标识每个节点的变量。。。此节点有很多描述。感谢您的解释对理解e解决我的XSLT问题非常有帮助。感谢您的解释对理解e解决我的XSLT问题非常有帮助。感谢您的解释对理解e解决我的XSLT问题非常有帮助。感谢您的解释对理解e解决我的XSLT问题非常有帮助理解并解决我的XSLT问题。