2015-09-30 3 views
0

В моем файле XML у меня есть тег, как это (в р тегов я имею NBSP;)Заменить NBSP с другим тегом

Теперь я хочу, чтобы заменить эту NBSP с другим тегом (в качестве примера в п тег I вставить другой тег с именем s <s/>)

возможно ли это, чтобы помочь do.Please

ответ

0

Прежде всего заметим, что дерево, на котором XSLT не работает и не содержит ссылку на символ или сущности, он просто содержит символ Unicode. Для того, чтобы соответствовать, и заменить Unicode символ с элементом можно использовать analyze-string:

<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="2.0"> 

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

<xsl:template match="p//text()"> 
    <xsl:analyze-string select="." regex="&#160;"> 
    <xsl:matching-substring> 
     <s/> 
    </xsl:matching-substring> 
    <xsl:non-matching-substring> 
     <xsl:value-of select="."/> 
    </xsl:non-matching-substring> 
    </xsl:analyze-string> 
</xsl:template> 

</xsl:stylesheet> 

Таким образом, входной документ как

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE doc [ 
    <!ENTITY nbsp "&#160;"> 
]> 
<doc> 
    <p>This is a paragraph with a non-breaking space &nbsp; before some sub text.</p> 
</doc> 

преобразуется в результирующий документ

<?xml version="1.0" encoding="UTF-8"?><doc> 
    <p>This is a paragraph with a non-breaking space <s/> before some sub text.</p> 
</doc> 
+0

Спасибо .It работает для меня. Можем ли мы сделать то же самое для любого символьного объекта. – user2490093

+0

Вы можете изменить атрибут 'regex'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '', Как я уже сказал, эта конструкция соответствует символам, а не ссылкам на сущности или символьным ссылкам. Независимо от того, работает ли исходный вход XML, содержащий ссылку на объект или ссылку на символ, или символ буквально не сохраняется в структуре данных дерева, XSLT работает. –

+0

это очень ясно для меня .. – user2490093