Основной вопрос о соответствии шаблона XSL

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

XML-файл:

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

XSL-ФАЙЛ

<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), либо «Корневая версия 1A2B3C» (bucket version)

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

Спасибо


person Sekhar    schedule 12.11.2010    source источник
comment
Хороший вопрос, +1. Смотрите мой ответ для объяснения.   -  person Dimitre Novatchev    schedule 12.11.2010
comment
Если вам любопытно, то я бы добавил еще один аспект. Часть <?xml относится к так называемому прологу xml. Пролог XML может содержать инструкции по обработке, комментарии и объявления типа документа.   -  person Alex Nikolaenkov    schedule 12.11.2010


Ответы (2)


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

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

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

person Dimitre Novatchev    schedule 12.11.2010