创建一个连接唯一子元素值的 XSLT 变量
Create a XSLT variable concatenating unique child element values
这是我的 XML
<?xml version='1.0'?>
<root>
<elems>
<status>Completed</status>
<description>Records</description>
<sub_type>SEC</sub_type>
<type>FIR</type>
<result>Done</result>
</elems>
<elems>
<status>Completed</status>
<description>Records</description>
<sub_type>SEC</sub_type>
<type>FIR</type>
<result>Done</result>
</elems>
<elems>
<status>Completed</status>
<description>Morals</description>
<sub_type>GIX</sub_type>
<type>PANC</type>
<result>Done</result>
</elems>
<elems>
<status>Completed</status>
<description>Morals</description>
<sub_type>GIX</sub_type>
<type>PANC</type>
<result>Done</result>
</elems>
<elems>
<status>Completed</status>
<description>Checking</description>
<type>SSO</type>
<result>Done</result>
</elems>
</root>
我想要一个变量,它应该通过连接 type
和 sub_type
元素来提供唯一值(因为 elems
元素是重复和重复的元素),如下所示。 sub_type
可以是空元素。对于我下面的例子,变量名可以是 vars
..
FIRSEC PANCGIX SSO
然后我应该可以使用这个 $var
foreach
<root>
<xsl:for-each select="$vars">
<inner><xsl:value-of select="." /></inner>
</xsl:for-each>
<root>
它应该打印
<root>
<inner>FIRSEC</inner>
<inner>PANCGIX</inner>
<inner>SSO</inner>
</root>
在 XSLT 2.0 中,使用 distinct-values()
函数非常简单:
<xsl:variable name="vars" select="distinct-values(/root/elems/concat(type,sub_type))"/>
注意这个变量是多余的,因为你可以直接做:
<root>
<xsl:for-each select="distinct-values(/root/elems/concat(type,sub_type))">
<inner>
<xsl:value-of select="." />
</inner>
</xsl:for-each>
</root>
这是我的 XML
<?xml version='1.0'?>
<root>
<elems>
<status>Completed</status>
<description>Records</description>
<sub_type>SEC</sub_type>
<type>FIR</type>
<result>Done</result>
</elems>
<elems>
<status>Completed</status>
<description>Records</description>
<sub_type>SEC</sub_type>
<type>FIR</type>
<result>Done</result>
</elems>
<elems>
<status>Completed</status>
<description>Morals</description>
<sub_type>GIX</sub_type>
<type>PANC</type>
<result>Done</result>
</elems>
<elems>
<status>Completed</status>
<description>Morals</description>
<sub_type>GIX</sub_type>
<type>PANC</type>
<result>Done</result>
</elems>
<elems>
<status>Completed</status>
<description>Checking</description>
<type>SSO</type>
<result>Done</result>
</elems>
</root>
我想要一个变量,它应该通过连接 type
和 sub_type
元素来提供唯一值(因为 elems
元素是重复和重复的元素),如下所示。 sub_type
可以是空元素。对于我下面的例子,变量名可以是 vars
..
FIRSEC PANCGIX SSO
然后我应该可以使用这个 $var
<root>
<xsl:for-each select="$vars">
<inner><xsl:value-of select="." /></inner>
</xsl:for-each>
<root>
它应该打印
<root>
<inner>FIRSEC</inner>
<inner>PANCGIX</inner>
<inner>SSO</inner>
</root>
在 XSLT 2.0 中,使用 distinct-values()
函数非常简单:
<xsl:variable name="vars" select="distinct-values(/root/elems/concat(type,sub_type))"/>
注意这个变量是多余的,因为你可以直接做:
<root>
<xsl:for-each select="distinct-values(/root/elems/concat(type,sub_type))">
<inner>
<xsl:value-of select="." />
</inner>
</xsl:for-each>
</root>