Как мне написать select = "", чтобы соответствовать всем значениям элемента cust,
не повторяется (если их больше 1)?
Вот полное, короткое и простое (без xsl:for-each
и без длинных и нечитаемых строк) Muenchian группировка решение :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:key name="kCustByVal" match="cust" use="."/>
<xsl:template match=
"cust
[generate-id()
=
generate-id(key('kCustByVal', .)[1])
]
">
<xsl:value-of select="."/><xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
когда это преобразование применяется к предоставленному XML-документу (после того, как он был исправлен после многочисленных исправлений):
<tickets>
<request day="tue">
<ticket>
<type>Tech Support</type>
<cust>9045</cust>
<status>pending</status>
</ticket>
<ticket>
<type>Account Support</type>
<cust>3344</cust>
<status>resolved</status>
</ticket>
</request>
<request day="wed">
<ticket>
<type>Tech Support</type>
<cust>9944</cust>
<status>new</status>
</ticket>
<ticket>
<type>Billing</type>
<cust>3344</cust>
<status>pending</status>
</ticket>
</request>
</tickets>
желаемый, правильный результат получается :
9045 3344 9944