2015-12-11 1 views
0

В XML-файл я вижу это в источнике: &lt;#&gt;, который вызывает проблемы в другом приложении, которое видит это как < # >удаления недопустимых символов в XML с помощью XSLT

Я использую XSLT2.0 и I попытались сделать замену на что-нибудь от # до div, чтобы удалить &lt;#&gt; с пустой строкой в ​​целом. Я сделал это, поместив структуру внутри переменной и заменив ее.

Результатом замены является то, что я теряю все остальные элементы. Любые предложения приветствуются. вход может выглядеть примерно так:

`<html> 
<body> 
    <p>&lt;#&gt;This is just a test</p> 
</body> 
</html>` 

Но она также может выглядеть следующим образом:

`<html> 
<body> 
    &lt;#&gt;<p>This is just a test</p> 
</body> 
</html>` 

Wanted из пут:

`<html> 
<body> 
    <p>This is just a test</p> 
</body> 
</html>` 

XSL Я попытался это это, что удаляет все элементы. Я вижу, что я делаю это на копирование из, так что»может быть неправильно ...:

`<xsl:template name="body"> 
    <xsl:copy-of select="replace($bodycontent, '#', 'div /')" /> 
</xsl:template name="body"> 

    <xsl:variable name="bodycontent"> 
    <xsl:apply-templates select="/newsMessage/itemSet/newsItem/contentSet/inlineXML/h:html/h:body/h:section/h:p" /> 
    <p class="txt-ind"> 
     <xsl:value-of select="//rightsInfo/copyrightHolder/name" /> 
    </p> 
</xsl:variable>` 
+0

Можете ли вы показать XSLT, который вы в настоящее время пытаетесь? Благодаря! –

ответ

2

Если вы используете

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

<xsl:template match="text()"> 
    <xsl:value-of select="replace(., '&lt;#&gt;', '')"/> 
</xsl:template> 

то любой появление этих символов будет удалено, онлайн по адресу http://xsltransform.net/gWvjQfu

+0

, который решил его, а также добавил замену на некоторые другие элементы. Но последний решил те комбинации, которые были вне некоторых элементов. – Trond