XML/XSL 用 <br/> 替换空格

标签 xml xslt

我正在尝试清理我的代码的可读性。使用 v1。非常感谢对我做错的任何帮助。

我拥有的 XML 代码:

    ...
    <trusted-servers>mark mike sally</trusted-servers>
    ...

我希望它以下列方式显示:

    mark
    mike
    sally

本来是用(<xsl:value-of select="trusted-servers"/>)这样显示的:

    mark mike sally

我试过的是:

    <xsl:value-of select="string-length(substring-before(trusted-servers, concat(' ', trusted-servers, '<xsl:text disable-output-escaping="yes"><![CDATA[<br />]]></xsl:text>')))" data-type="string"/>

但它会抛出一个错误,指出未转义字符 <是不允许的。我试着取出 <xsl:text disable-output-escaping="yes"><![CDATA[<br />]]></xsl:text>部分并将其替换为 <br/>但仍然有同样的错误。我对其他任何方式都一无所知。

最佳答案

一般来说,<xsl:text disable-output-escaping="yes">应该尽量避免!

由于您使用的是 XSLT 1.0,因此最好的解决方案是编写一个模板,该模板将递归地替换 <br> 遇到的第一个空格。 ,例如:

<xsl:template match="trusted-servers" name="replace-space-by-br">
    <xsl:param name="text" select="."/>
    <xsl:choose>
        <xsl:when test="contains($text, ' ')">
            <xsl:variable name="head" select="substring-before($text, ' ')"/>
            <xsl:variable name="tail" select="substring-after($text, ' ')"/>
            <xsl:value-of select="$head"/>
            <br/>
            <xsl:call-template name="replace-space-by-br">
                <xsl:with-param name="text" select="$tail"/>
            </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="$text"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

关于XML/XSL 用 <br/> 替换空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20959843/

相关文章:

xml - 当我重复项目时,如何在 grxml 文件中使用语义标记?

Java:解析 XML 数据的函数 - 没有输出任何内容

xml - XSL 转换后删除空元素

xml - 无法选择附加命名空间的节点

xml - 将 sqlplus 结果假脱机到 xml 文件时不需要的新行

android - 创建了一个空进度条?

java - 为什么xs :any not autobind with jaxb class?

javascript - 如何将确认框添加到我的 Sharepoint 页面,其中确认具有额外的 Javascript?

xml - 去除 XSL 模板输出中的 XML 根节点

xml - XSL 选择变量标签