У меня есть следующий файл с XMLXSLT отступы теряются при удалении узла
<?xml version="1.0" encoding="UTF-8"?>
<start>
<param_1>
<short_name>parameter_a</short_name>
</param_1>
<param_2>
<short_name_2>parameter_b</short_name_2>
</param_2>
</start>
и у меня есть следующий XSLT файл:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xlink="http://www.w3.org/1999/xlink">
<xsl:output method="xml" indent="yes" encoding="utf-8" />
<xsl:template match="/" >
<gml:description>
<xsl:value-of select="document('/path/to/mydoc.xml')/start/param_1/short_name"/>
</gml:description>
<gml:description>
<xsl:for-each select="document('/path/to/mydoc.xml')/start/param_2">
<xsl:variable name="my_xlink" select="short_name_2"/>
<xsl:value-of select="$my_offering1_observed_property_xlink"/>
<om:observedProperty xlink:href="{$my_offering1_observed_property_xlink}"/>
</xsl:for-each>
</gml:description>
</xsl:template>
</xsl:stylesheet>
это выход я получаю
<?xml version="1.0" encoding="utf-8"?>
<gml:description>parameter_a</gml:description>
<gml:description>parameter_b<om:observedProperty xlink:href="parameter_b"/></gml:description>
проблема в том, что я хотел бы получить этот результат
<?xml version="1.0" encoding="utf-8"?>
<gml:description>parameter_a</gml:description>
<om:observedProperty xlink:href="parameter_b"/>
, но если я удалить <gml:description>
из моего узла XSLT файла конечный XML потерял свою отступы:
<?xml version="1.0" encoding="utf-8"?>
<gml:description>parameter_a</gml:description><om:observedProperty xlink:href="parameter_b"/>
могли бы вы сказать мне, что я делаю неправильно?
благодаря
Пожалуйста, ваш полный XSLT, в том числе объявления пространства имен и XSL: настройки вывода. - Обратите внимание, что ожидаемый результат не является хорошо сформированным XML-документом (отсутствует один корневой элемент). В зависимости от вашего процессора это может быть причиной отсутствия отступов. –
Привет майкл, Я только что добавил объявление пространства имен. Я не знаю, является ли это проблемой объявления или процессора, потому что, если я оставлю, он работает. , но я, вероятно, что-то недопонимаю –
Ваш XSLT ошибочен. Например, он содержит два совпадения для '' и пропускает несколько закрывающих тегов. Между этим кодом и [mcve] существует некоторое расстояние. –
zx485