Может ли xslt прочитать или пропустить тег <beans: beans>? - PullRequest
1 голос
/ 19 апреля 2011

Я создаю XSLT-файл для XML, который содержит тег <beans:bean>, вероятно, из Spring Framework.По сути, структура XML выглядит следующим образом:

 <beans:beans>
   <fix>
       <message>
               important content
       </message>   
   </fix>
</beans:beans>

Я не могу найти способ избавиться от тега <beans:beans>, на самом деле соответствующий контент для меня находится под тегом message.

Использование <xsl:for-each select="fix/message"> Я могу найти нужный мне контент.Однако я должен удалить тег <beans:beans> вручную

Есть ли способ заставить XSLT пропустить или прочитать тег <beans:beans>?

1 Ответ

0 голосов
/ 19 апреля 2011

Это идиоматически решается с помощью преобразования идентификаторов с переопределением:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:beans="http://someuri">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:template>
    <xsl:template match="beans:beans">
        <xsl:apply-templates />
    </xsl:template>
</xsl:stylesheet>

Применяется к этому входу:

<root>
    <beans:beans xmlns:beans="http://someuri">
        <fix>
            <message>
                important content
            </message>
        </fix>
    </beans:beans>
</root>

Удаляет нежелательный элемент:

<root>
   <fix>
       <message>
               important content
       </message>   
   </fix>
</root>

Некоторые заметки:

  • Копирует все в файле без изменений, кроме элемента beans:beans
  • Ваш элемент beans имеет префикс пространства имен. Я добавил URI пространства имен, чтобы это преобразование работало.
  • Ваша таблица стилей также должна знать пространство имен. Обратите внимание на использование xmlns:beans="http://someuri". Вам нужно будет изменить это, чтобы отобразить фактическое beans пространство имен.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...