Как включить разрыв строки в выражении XPath?

xml xpath xslt-1.0 xpath-1.0

1859 просмотра

2 ответа

Есть ли способ добавить разрыв строки в выражение 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;, но не повезло. Спасибо тебе за твое терпение.

Автор: Rob Ot Источник Размещён: 04.11.2019 11:59

Ответы (2)


1 плюс

Чтобы продемонстрировать, что подразумевается под минимальным, полным и проверяемым примером :

Следующая таблица стилей:

<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)" />
Автор: michael.hor257k Размещён: 04.05.2016 07:01

0 плюса

Решил это. Проблема оказалась проблемой белого пространства. Очевидно, установка его на что-либо кроме «pre» будет игнорировать разрывы строк Xpath в IE.

Автор: Rob Ot Размещён: 05.05.2016 02:29
Вопросы из категории :
32x32