Привет, я новичок в XSLT2.0, но, поскольку в недавнем проекте требуется конфигурация XML, я бы попробовал.Структура XML будет выглядеть так:
<bookstore>
<books>
<book author="a" title="a1"/>
<book author="b" title="b1"/>
<book author="c" title="c1"/>
<book author="d" title="d1"/>
</books>
<topAuthorList>
<thisMonth>c,a,d,b</thisMonth>
</topAuthorList>
И XSLT выглядит так:
<xsl:template match="/bookstore">
<result>
<xsl:variable name="varList">
<xsl:value-of select="topAuthorList/thisMonth"></xsl:value-of>
</xsl:variable>
<test>
<xsl:value-of select="books/book[@author='a']/@title"></xsl:value-of>
</test>
<books>
<xsl:for-each select="tokenize($varList, ',')">
<xsl:value-of select="books/book[@author=current()]/@title"></xsl:value-of>
</xsl:for-each>
</books>
</result>
</xsl:template>
Но в XMLSpy (версия 2011 г. rev3) это дает мнесообщение об ошибке:
XSLT 2.0 Debugging Error: Error in XPath 2.0 expression (Type error XPTY0004: Expected a node - current item is 'c' of type xs:string)
У меня был поиск в Google и на этом сайте много раз, и я не смог найти ответ.Я даже пытался использовать call-template, то есть передать current () в качестве параметра и позволить второму шаблону обрабатывать выбор узла, но все равно та же ошибка.