这些只是在学习XSLT时因挫折而产生的一些观察结果。
符号的含义根据位置和背景而变化
以下三行显示'/'字符的用法,并且在每一行中该字符表示完全不同的字符。 第一行表示根节点,第二个子父亲关系和第三个子元素后代。 换句话说,同一个角色的含义已经被覆盖了三次,并且根据位置和周围环境完全改变了意义。
<xsl:template match="/">
<xsl:template match="people/person">
<xsl:template match="people//name">
合并时制定规则
在下面的表达式中,“/”表示根节点。
<xsl:template match="/">
。
在下面的表达式中,“/”表示该人是人的孩子。
<xsl:template match="people/person">
。
现在,如果您尝试将这两个规则结合起来引用应该是根节点的子节点的人,并编写<xsl:template match="//people">
并获得预期结果,但只是偶然。
这是因为'//'具有与根节点或子父关系无关的全新含义。 它意味着所有后代,在这种情况下,它指的是根节点的所有后代,而不仅仅是人子。
让我怀疑
所有这些困扰XSLT的问题让我想知道创建它的人是谁,他们究竟想要实现什么,他们的指导方针是什么以及谁是缩进用户。 我确信这些人非常聪明,因为XSLT非常复杂。 但是我想知道他们是否只为他们自己创造了这个怪物或者故意让它变得如此不必要的复杂和混乱,以便为其他人建立人工屏障,或者如果他们根本不关心那些可能想要长时间使用它的人因为事情似乎对他们有用。