如何在XPath表达式中包含换行符?

时间:2016-05-04 16:50:27

标签: xml xpath xslt-1.0 xpath-1.0

有没有办法为XPath表达式添加换行符?

这是我当前的表达,它不起作用

{concat(@Parameter1, $NullObj, @Parameter2)}

变量$NullObj等于
 LINEFEED字符的十六进制值。

输出"参数1参数2。"

编辑:不幸的是,我使用的是Xpath / Xsl 1.0。

编辑:下面的示例代码。 XML:

<Post>
  <Title>Title Text</Title>
  <Body>Body Text </Body>
  <Author>Author Name</Author>
</Post>

示例XSL

<xsl:Variable name="NullObj">
<xsl:value-of select="'&#xa;'" />
</xsl:variable>

Edit2:完整的Xpath上下文,按要求:

<xsl:value-of select="concat("The title is", @Title, $NullObj, "The Body reads:", @Body, $NullObj, "The Author is", @Author)" />

结果输出不包括换行符。我错过了什么基本的东西? 我还尝试用&#xa;替换&#10;,但没有运气。 谢谢你的耐心。

2 个答案:

答案 0 :(得分:1)

演示Minimal, Complete, and Verifiable example的含义:

以下样式表:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:variable name="NullObj">
    <xsl:value-of select="'&#xa;'" />
</xsl:variable>

<xsl:template match="/Post">
    <xsl:copy>
        <xsl:value-of select="concat('The title is: ', Title, $NullObj, 'The Body reads:', Body, $NullObj, 'The Author is: ', Author)" />
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

应用于您的示例输入,返回:

<?xml version="1.0" encoding="UTF-8"?>
<Post>The title is: Title Text
The Body reads:Body Text 
The Author is: Author Name</Post>

如您所见,换行符是您期望的。

编辑:

显然,您正在尝试生成 HTML输出 - 所以正确的答案是:

<xsl:value-of select="concat('The title is: ', Title)" />
<br/>
<xsl:value-of select="concat('The Body reads:', Body)" />
<br/>
<xsl:value-of select="concat('The Author is: ', Author)" />

答案 1 :(得分:0)

解决了它。问题原来是一个白色空间问题。显然将其设置为“pre”以外的任何内容都会忽略IE中的Xpath换行符。