2010-10-20 8 views
2

Я относительно новичок в XSLT. Я столкнулся с проблемой, что не знаю, как обойти. У меня есть довольно большой XML-документ, который я пытаюсь преобразовать в другой меньший, уточненный XML-документ.Трансформация & в XSLT?

Большой XML документ имеет этот стиль:

<Property> 
    <name>Document name</name> 
    <value>SomeValue</value> 
</Property> 
... 
<Property> 
    <name>Document Title</name> 
    <value>Me %amp; you</value> 
</Property> 

Как превратить значение между элементами стоимости и сохранить «& усилителя»; неповрежденными. По-видимому, преобразование этого XML вызывает ошибки из-за того, что амперсанд скрывается в тексте.

Примечание. Этот большой XML генерируется приложением, которое извлекает данные с сервера. Так я вроде застрял дело с экранируйте :(

+0

Ваш вопрос непонятен. Всякий раз, когда вы сериализуете свой вывод с помощью метода XML (или HTML), символ '&' будет выполняться как '&' ссылка на сущность в качестве спецификации XML. Только при сериализации вывода с помощью метода 'text' escape не выполняется. – 2010-10-20 20:46:59

+0

Хороший вопрос, +1. См. Мой ответ для простого примера преобразования с требуемым свойством. –

ответ

1

Вот простой (и очень фундаментальный) пример, используя правило идентичности:

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

<xsl:template match="node()|@*"> 
    <xsl:copy> 
    <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 
</xsl:stylesheet> 

когда это преобразование применяется на предоставленный XML-файл:

<t> 
<Property> 
    <name>Document name</name> 
    <value>SomeValue</value> 
</Property> 
... 
<Property> 
    <name>Document Title</name> 
    <value>Me &amp; you</value> 
</Property> 
</t> 

она превращается в себе (идентичность):

<t> 
    <Property> 
     <name>Document name</name> 
     <value>SomeValue</value> 
    </Property> 
... 
<Property> 
     <name>Document Title</name> 
     <value>Me &amp; you</value> 
    </Property> 
</t> 

и персонаж &amp; сохранен.

+0

+1 Спасибо Dimitre! Я проверю это один раз, когда я проведу несколько тестов! –

Смежные вопросы