Как получить значение атрибута корневого элемента в XSLT? - PullRequest
5 голосов
/ 28 октября 2009

У меня есть XML :

 <?xml version="1.0" encoding="utf-8" ?>
 <IMPORT mode="FULL">
    ....
 </IMPORT>

Я пытаюсь преобразовать его с помощью следующей таблицы XSLT :

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:element name="import">
      <xsl:attribute name="mode">
        <xsl:value-of select="@mode"/>
      </xsl:attribute>
           ....
      </xsl:element>
  </xsl:template>

Моя проблема в том, что следующая строка не работает:

<xsl:value-of select="@mode"/>

Как я только получаю

<import mode="">

вместо ожидаемого:

<import mode="FULL">

Есть какие-нибудь подсказки?

Ответы [ 3 ]

8 голосов
/ 28 октября 2009

Вы на самом деле не на элементе IMPORT.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:apply-templates select="IMPORT"/>
  </xsl:template>
  <xsl:template match="IMPORT">
    <xsl:element name="import">
      <xsl:attribute name="mode">
        <xsl:value-of select="@mode"/>
      </xsl:attribute>
       ....      
    </xsl:element>
  </xsl:template>
7 голосов
/ 28 октября 2009

Попробуйте использовать <xsl:value-of select="IMPORT/@mode"/>

1 голос
/ 28 октября 2009

Попробуйте это:

<xsl:template match="IMPORT">
    <xsl:element name="import">
        <xsl:attribute name="mode">
            <xsl:value-of select="@mode"/>
            </xsl:attribute>
    </xsl:element>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...