2012-12-14 79 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