3

我不知道我正在寻找什么的正确术语,但我正在寻找的是一个完整的参考,可以在双引号之间的陈述,像*, node(), , 和所有这里@*列出的加上任何其他存在的。

<xsl:template match="*">

我链接到的答案提供了一些细节,但还不够。例如,关于我上面给出的示例,该答案说“可以应用于任何元素”,但是在 Xpath 中什么被认为是“元素”?包括什么node()?哪些语句包含属性?等等

我已经在这里这里搜索了参考资料,我正在慢慢阅读本书,但我没有看到我想要的信息,这基本上是一个综合的(并且希望是详尽的)陈述列表及其含义。是否存在这样的列表,如果存在,它在哪里?免费很好,但不是必需的。

4

3 回答 3

4

在 XSLT 中,该match模式接受 XPath 表达式的子集。因此,可以作为match属性值出现的表达式集由两个规范管理:XPath 规范本身,它定义了匹配模式是其子集的语言,以及 XSLT 规范,它定义了子集。

如果您正在使用 XSLT 1.0,则权威帐户由XPath 1.0规范和XSLT 1.0规范提供。XPath 的本质是语言的大小是无限的。不可能有详尽的法律模式清单。相反,合法模式集由 XSLT 和 XPath 规范中给出的上下文无关文法定义。

如果您使用 XSLT 2.0,相关规范是XPath 2.0 (Second Edition) 和XSLT 2.0。同样,合法匹配模式的定义使用部分在 XSLT 规范和部分在 XPath 规范中定义的语法。

你问什么是 Xpath 中的“元素”?node() 包括什么?哪些语句包含属性?等等

两个版本的 XPath 都定义了如何针对 XPath 数据模型的实例评估表达式;是数据模型指定所有元素节点都是节点,但并非所有节点都是元素节点(依此类推)。XPath 1.0 的数据模型更简单,通常更容易理解,但它的定义相当不正式,并且存在一些读者认为有问题的差距和矛盾;它在 XPath 1.0 规范的第 5 节中定义。XPath 2.0 数据模型不仅被 XPath 和 XSLT 使用,也被 XQuery 使用;它是在名为XQuery 1.0 and XPath 2.0 Data Model (XDM)的规范中定义的。

一本关于 XSLT 的好书通常也会很好地说明数据模型。当然,取决于书的风格,它可能或多或少详尽无遗,或多或少会注意一些极端情况。有几本好书,我听到人们对 Doug Tidwell 的书说好话。但是我在每个严肃的 XSLT 程序员书架上都找到的一本 XSLT 书是 Michael Kay 写的。(实际上,我认识的最认真的 XSLT 程序员拥有两个:XSLT 1.0 版本和 XSLT 2.0 版本。)

从您问题的措辞看来,您可能还想阅读一些对 XML 本身的系统介绍。

于 2013-09-18T01:04:33.293 回答
2

让我想起了一位经理,他要求你制定消除世界癌症的计划,并坚持明天必须在一张 A4 纸上提出这些计划。您发现您需要比简单的“单页”参考提供更多的技术细节,但您仍然重视它们的简单性:您同时要求完整性和简洁性,这是一个艰难的命令。

我认为您实际上已经很好地回答了自己的问题。您会发现您需要更好地理解数据模型,因为这是您需要编写的所有 XPath 表达式和 XSLT 模式的语义的基础。正如 Michael Sperberg-McQueen 所指出的,在 XPath 1.0 规范中有一个令人钦佩的简洁但令人遗憾的非正式描述,在与 XSLT 2.0 和 XQuery 1.0 相关联的 XDM 规范中有一个令人钦佩的详细但令人遗憾的冗长描述。同样,您还发现任何对 XPath(或模式)语法和语义的简短引用都是不完整的,但任何更长的描述都需要时间来吸收。所以你知道你必须做出的选择!

于 2013-09-18T07:48:07.213 回答
0

一个元素是一个类似 XML 的结构<Something>,一个属性看起来像Something="value",两者都可以称为节点

我认为一个很好的参考是XPath 规范本身。阅读全部内容需要一些时间才能理解它,但这是一个收集一些术语以制定更具体问题的好地方。

于 2013-09-17T23:43:29.457 回答