如何解决如何区分XSL中的两个模板?
| 这就是我要在XSL中执行的操作:<xsl:apply-templates select=\"document(\'a.xml\')//row\"/>
<xsl:apply-templates select=\"document(\'b.xml\')//row\"/>
<xsl:template match=\"row\">
<!-- for document a.xml -->
</xsl:template>
<xsl:template match=\"row\">
<!-- for document b.xml -->
</xsl:template>
由于明显的原因,它不能像现在那样工作。如何区分这两个模板? ѭ1和b.xml
在XML结构方面绝对相同。
解决方法
使用
mode
属性。
<xsl:apply-templates select=\"document(\'a.xml\')//row\" mode=\"a\"/>
<xsl:apply-templates select=\"document(\'b.xml\')//row\" mode=\"b\"/>
<xsl:template match=\"row\" mode=\"a\">
<!-- for document a.xml -->
</xsl:template>
<xsl:template match=\"row\" mode=\"b\">
<!-- for document b.xml -->
</xsl:template>
,您可以按照建议的方式使用mode属性,尽管这确实意味着该决定部分是在xsl:apply-templates级别做出的,部分是由模板规则本身做出的。如果您希望控件完全在模板规则中,则可以使用匹配模式
row[(/) is document(\'a.xml\')]
row[(/) is document(\'b.xml\')]
(如果您仍在使用XSLT 1.0,请将\“A is B
\”替换为\“generate-id(A) = generate-id(B)
\”)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。