XSLT 将样式从 3.0 转换为 2.0 - 变量引用错误
XSLT converting style down from 3.0 to 2.0 - variable reference error
我有一个很大的 XSL 3.0 样式表,我需要将其转换为 XSL 2.0。整个文档中似乎重复出现了一个错误,但我不确定如何修复它。
例如,在 XSL 3.0 中我声明了这些变量:
<xsl:variable name="glosspath"
select="/tei:TEI/tei:text//tei:add"/>
<xsl:variable name="apppath"
select="/tei:TEI/tei:text//tei:del | /tei:TEI/tei:text//tei:surplus | /tei:TEI/tei:text//tei:supplied[@reason='added']
| /tei:TEI/tei:text//tei:choice[@style='sic'] | /tei:TEI/tei:text//tei:sic[@style='sic'] | /tei:TEI/tei:text//tei:gap
| /tei:TEI/tei:text//tei:note[@type='reading']"/>
然后我在各种上下文中使用这些变量,例如
<xsl:template match="$glosspath">...
或:
<xsl:number count="$apppath" format="a" level="any"/>
变量都抛出相同的错误:XTSE0340 XSLT Pattern syntax error at char 0 on line 635 in {$glosspath}: A variable reference is not allowed in an XSLT pattern (except in a predicate)
我查看了 this and at the guidelines 等网站上的各种答案,但我不确定如何重写它以符合要求...
非常感谢。
我相信对于您的模板匹配,您可以做到这一点...
<xsl:template match="*[. intersect $glosspath]">
对于数字,你可以这样做(虽然这不一定有效)
<xsl:number count="*[. intersect $apppath]" format="a" level="any"/>
编辑:更改为使用 intersect
。感谢 Martin Honnen
我有一个很大的 XSL 3.0 样式表,我需要将其转换为 XSL 2.0。整个文档中似乎重复出现了一个错误,但我不确定如何修复它。
例如,在 XSL 3.0 中我声明了这些变量:
<xsl:variable name="glosspath"
select="/tei:TEI/tei:text//tei:add"/>
<xsl:variable name="apppath"
select="/tei:TEI/tei:text//tei:del | /tei:TEI/tei:text//tei:surplus | /tei:TEI/tei:text//tei:supplied[@reason='added']
| /tei:TEI/tei:text//tei:choice[@style='sic'] | /tei:TEI/tei:text//tei:sic[@style='sic'] | /tei:TEI/tei:text//tei:gap
| /tei:TEI/tei:text//tei:note[@type='reading']"/>
然后我在各种上下文中使用这些变量,例如
<xsl:template match="$glosspath">...
或:
<xsl:number count="$apppath" format="a" level="any"/>
变量都抛出相同的错误:XTSE0340 XSLT Pattern syntax error at char 0 on line 635 in {$glosspath}: A variable reference is not allowed in an XSLT pattern (except in a predicate)
我查看了 this and at the guidelines 等网站上的各种答案,但我不确定如何重写它以符合要求...
非常感谢。
我相信对于您的模板匹配,您可以做到这一点...
<xsl:template match="*[. intersect $glosspath]">
对于数字,你可以这样做(虽然这不一定有效)
<xsl:number count="*[. intersect $apppath]" format="a" level="any"/>
编辑:更改为使用 intersect
。感谢 Martin Honnen