LINUX.ORG.RU

Пример XSLT


0

0

Я начинающий в XSLT, поэтому два вопроса:
1. Где можно посмотреть работающие с xsltproc несложные примеры?
2. Сделал свой xsl:
<?xml version="1.0" encoding="KOI8-R"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">;
<xsl:output indent="yes"/>

<xsl:template match="/">
<xsl:value-of select="//command/@help"/>
</xsl:template>

</xsl:stylesheet>

Есть некий валидный xml, внутри него какая то сложная структура, в которой присутствуют тэги COMMAND (они везде на одном уровне в дереве), у тэга есть аттрибут help. Вроде составил как написано во многих примерах XSL-файл, приведенный выше, но он не работает :-( Подскажите, как будет правильно исправить вышеприведенный xsl?

★★★★★

Да, в п.2 хочется увидеть перечень значений атрибутов хоть в каком-нибудь порядке и не важно что там добавится сверху или снизу (xml шапку он добавит, т.к. по-умолчанию).

saper ★★★★★
() автор топика

1. Вкуривать документацию от W3 (это пиздец, разумеется, но так с любой XML-технологией).

Sphinx ★★☆☆
()

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>

<xsl:template match="//command">
  <xsl:value-of select="@help" />
</xsl:template>

</xsl:stylesheet> 

Sphinx ★★☆☆
()
Ответ на: комментарий от Sphinx

Попробовал, не работает :-( Если я осилю этот пример, то дальше точно сам разберусь, а пока это какая то чертовщина. Кстати другие доки по XML гораздо легче читаются, чем этот XSL Transformations.

Вот my.xml:
<?xml version="1.0" encoding="utf-8"?>
<MY_MODULE>
<PART name="test1">
<COMMAND help="freeattr">
<VISITM>free</VISITM>
</COMMAND>

<COMMAND help="niceattr">
<VISITM>nice</VISITM>
</COMMAND>

<COMMAND help="noVISITMattr"/>
</PART>
</MY_MODULE>

Вот my.xsl:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">;
<xsl:output indent="yes"/>

<xsl:template match="//command">
<xsl:value-of select="@help" />
</xsl:template>

</xsl:stylesheet>

Вот команда:
$ xsltproc my.xsl my.xml
<?xml version="1.0"?>



free



nice
... и еще несколько переводов строк тут.

Я почему то не вижу значений атрибутов help :-(

Команда xsltproc с опциями -v my.xsl my.xml 3 раза выдает:
xsltProcessOneNode: no template found for COMMAND

Ну и до кучи, у меня достаточно свежие версии libxml2/libxslt:
$ xsltproc --version
Using libxml 20628, libxslt 10120 and libexslt 813
xsltproc was compiled against libxml 20627, libxslt 10120 and libexslt 813
libxslt 10120 was compiled against libxml 20627
libexslt 813 was compiled against libxml 20627

saper ★★★★★
() автор топика
Ответ на: комментарий от saper

Регистр!

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>

<xsl:template match="//COMMAND">
  <xsl:value-of select="@help" />
</xsl:template>

</xsl:stylesheet> 

Sphinx ★★☆☆
()
Ответ на: комментарий от Sphinx

Огромное спасибо вам! Теперь разберусь.

saper ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.