2016-02-04 34 views
1

我有这个XSLT的片段(1.0版本):XSLT和XSL:对,每一个通配符

<p><xsl:value-of select="Items/chkBox1" disable-output-escaping="yes" /></p> 
<p><xsl:value-of select="Items/chkBox2" disable-output-escaping="yes" /></p> 
<p><xsl:value-of select="Items/chkBox3" disable-output-escaping="yes" /></p> 

这是工作的罚款。我想用<xsl:for-each>来写这个更聪明,因为Items/chkBox的数量可能不同,但我无法使它工作。我已经尝试了许多事情是这样的:

<xsl:for-each select="Items/chkBox*"> 
    <p><xsl:value-of select="." disable-output-escaping="yes" /></p> 
</xsl:for-each> 

但它不工作 - 我得到的错误:

Unexpected token '' in the expression. Items/chkBox*<--

我如何使用<xsl:for-each>使用通配符的数量结束?

请帮忙!

感谢提前:)

+0

有一个很好的机会,你不需要'的'但是'chkBox'名称的模板匹配。张贴更多的xslt甚至是原始xml样本,以便我们向您展示。 – Parfait

+0

感谢您的建议,但来自@TimC的回答非常好,只是我寻找的解决方案。 – user1855026

回答

2

*匹配的元件。如果你想匹配元素名称,你必须考虑使用字符串函数。在这种情况下,starts-with

<xsl:for-each select="Items/*[starts-with(local-name(), 'chkBox')]"> 
+0

非常感谢,@TimC,它工作的很好! :) – user1855026