【问题标题】:what is the use of schema-element and schema-attribute模式元素和模式属性的用途是什么
【发布时间】:2014-10-20 08:36:07
【问题描述】:
我正在研究 XSLT,并在规范中发现了这一点:http://www.w3.org/TR/xslt20/#conflict
我想知道为什么将以下内容用于:
schema-element(E) 0.25 (matches by substitution group and type)
schema-attribute(A) 0.25 (matches by name and type)
为什么要匹配架构元素或属性?它有什么用?
【问题讨论】:
标签:
xml
xslt
schema
xslt-2.0
【解决方案2】:
schema-element() 很有用,因为您可以匹配替换组的所有成员;如果您使用的模式可以很好地利用替换组,这确实非常方便。 (但是 schema-attribute() 用处不大,因为很少有模式使用全局属性声明)。
编写模式感知代码的最大好处是调试容易得多:因为系统有更多关于 XML 结构的信息,它可以在您出错时为您提供编译时诊断。
例如,如果你写
<xsl:template match="schema-element(books)">
<xsl:value-of select="books/@title"/>
</xsl:template>
那么,模式感知 XSLT 处理器很可能会检测到该模式不允许有效的“books”元素有一个名为“books”的子元素,因此它可以在编译样式表时提醒您这个错误。如果你只是简单地写了 match="books",就没有指向模式信息的链接,所以这个推断是不可能的;你会遇到一个经典的问题,即为什么你的样式表没有产生输出。
还有潜在的性能优势,尽管在大多数情况下它是次要的,并且可能会被验证源文档的额外成本所抵消。