XSLT - Амперсанд в & преобразование разрушения сущностей - PullRequest
0 голосов
/ 26 февраля 2011

Я делаю свое преобразование в php.

Я получаю большой XML-файл для преобразования, который работает нормально, однако внутри узла есть URL, содержащий символ & (закодированный в &)то есть

<web:cacheurl>http://cc.bingj.com/cache.aspx?q=adewy&amp;d=4573100964054074&amp;w=95e613ec,b3e54511</web:cacheurl>

Все хорошо, я думал, однако & в &amp;, кажется, нарушает любые преобразования в этом узле И все узлы, которые появляются после него в XML.

Если я удаляю все и из XML только в amp;проблема исправлена ​​и, следовательно, отлажена - я действительно не хочу лишать их, а затем вставлять обратно после преобразования, это немного странно.Есть идеи?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2011

Я не могу воспроизвести эту предполагаемую проблему.

Это преобразование :

<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 (с добавленным объявлением пространства имен, чтобы сделать его правильно сформированным):

<web:cacheurl xmlns:web="some:web">http://cc.bingj.com/cache.aspx?q=adewy&amp;d=4573100964054074&amp;w=95e613ec,b3e54511</web:cacheurl>

дает требуемый, правильный результат :

<web:cacheurl xmlns:web="some:web">http://cc.bingj.com/cache.aspx?q=adewy&amp;d=4573100964054074&amp;w=95e613ec,b3e54511</web:cacheurl>

этот же результат получают все девять процессоров XSLT (как 1.0, так и 2.0), которые я использую .

0 голосов
/ 20 октября 2011

У меня была эта проблема при использовании процессора Saxon 9.1 xslt в Stylus studio 2011. При использовании процессора Microsoft MSXML 6 проблема исчезла.

Обновление:

только проблемапроисходит при использовании амперсанда в значении атрибута ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...