2012-12-14 115 views
0

我已經搜索了將XML節點重命名爲字符串。我已經找到了XML到Nodes中的字符串示例,但沒有發現其他方式。XML使用XSLT 2.0將節點轉換爲字符串

是否可以做以下

<par> 
<run> Some text <break/> </run> 
</par> 

<par> 
<run> some text with no carraige return</run> 
</par> 

要:

<par> 
<run> Some text &#10; </run> 
</par> 

非常感謝您事先的任何答覆。

Dono

回答

1

當然,這是可能的。只需使用身份轉換並專門處理<break>。除了使用<xsl:copy>複製它的輸出任何文本你喜歡:

<?xml version="1.0" encoding="UTF-8"?> 
<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="break"> 
    <xsl:value-of select="'&#10;'"/> 
    </xsl:template> 

</xsl:stylesheet> 

你想要的文字輸出&#10;你可以使用disable-output-escaping,像

<?xml version="1.0" encoding="UTF-8"?> 
<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="break"> 
    <xsl:value-of select="'&amp;#10;'" disable-output-escaping="yes"/> 
    </xsl:template> 

</xsl:stylesheet> 

不過我,這是一項可選功能,並且不保證得到任何XSLT處理器的支持。

+0

你是我的朋友的傳奇人物。 – Dono