Основной вопрос относительно соответствия шаблона XSL - PullRequest
3 голосов
/ 12 ноября 2010

Я только начал возиться с XML, и у меня есть вопрос.

XML-файл:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<bucket version="Root Version 1A2B3C">
</bucket>

XSL FILE

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
  <xsl:template match="bucket"> 
    <html>
       <body>
        <h3>
          <xsl:value-of select="@version"/>
        </h3>
      </body>
    </html>
  </xsl:template>
 </xsl:stylesheet>

У меня есть вопросы относительно третьей строки XSL. Если я использую

<xsl:template match="bucket"> - Root Version 1A2B3C напечатано

<xsl:template match="/"> -

ничего не печатается - я думал "/" означает корень. Насколько я понимаю, он должен либо напечатать "1.0" (<?xml version) или "Root Version 1A2B3C" (bucket version)

Пожалуйста, дайте мне знать, почему он не работает.

Спасибо

Ответы [ 2 ]

2 голосов
/ 12 ноября 2010

/ обозначает document-node () - то есть весь документ .

В предоставленном XML элемент bucket является верхним элементом документа. Это не корневой узел.

У верхнего элемента bucket все еще могут быть братья и сестры , такие как инструкции обработки или узлы комментариев. У верхнего элемента вместе со своими братьями и сестрами один родитель, и это / - корневой узел документа.

2 голосов
/ 12 ноября 2010

С http://www.w3.org/TR/xpath/#root-node

Корневой узел является корнем дерева. Корневой узел не встречается, кроме как корень дерева. Элемент узла для элемента документа является дочерним корневой узел. Корневой узел также имеет как дети обрабатывают инструкции и узлы комментариев для обработки инструкции и комментарии, которые происходят в прологе и после окончания элемент документа.

Всегда помни это (с http://www.w3.org/TR/xpath/#section-Introduction):

XPath оперирует абстрактно, логическая структура документа XML, а не его поверхностный синтаксис.

Итак, корень документа / означает «логический» корень всего документа.

...