В моем XSL-файле с помощью этой команды я
получить как содержимое tag1, так и
содержимое tag2 напечатано:
<xsl:value-of select="tag1"/>
Как я могу получить только первый, выше
уровень, строка?
Ваш код создает строковое значение элемента tag1
, которое по определению является объединением всех текстовых узлов-потомков элемента.
Для производства всего
строка "Распечатать это"
вам нужно указать выражение XPath, которое выбирает только соответствующий текстовый узел :
/tag1/text()[1]
Указание [1]
необходимо для выбора только первого дочернего текстового узла, в противном случае могут быть выбраны два текстовых узла (это проблема только в XSLT 2.0, где <xsl:value-of>
создает строковые значения всех узлов, указанных в select
атрибут).
Далее, вышеприведенное выражение выделяет весь текстовый узел, и его строковое значение не "Print this"
.
Строковое значение на самом деле:
"
Print this
"
и именно это будет выводиться, если вы заключите <xsl:value-of>
в кавычки.
Чтобы получить именно искомую строку "Print this"
, используйте :
"<xsl:value-of select="normalize-space(/tag1/text()[1])"/>"