【问题标题】: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


    【解决方案1】:

    Schema-element()schema-attribute() 支持模式感知 XSLT 处理,它利用类型检查来提高表达能力并帮助在开发周期的早期检测错误。

    Schema-aware processing with XSLT 2.0. 是对模式感知 XSLT 处理的好处的一个很好的介绍

    请注意,您的 XSLT 2.0 处理器必须支持模式感知处理。 Saxon-EE 是支持模式感知处理的 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",就没有指向模式信息的链接,所以这个推断是不可能的;你会遇到一个经典的问题,即为什么你的样式表没有产生输出。

      还有潜在的性能优势,尽管在大多数情况下它是次要的,并且可能会被验证源文档的额外成本所抵消。

      【讨论】:

      • 你能编辑你的ans并给我一个带有模式元素的小例子
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多