Как заставить открывать и закрывать теги в преобразовании XML? - PullRequest
0 голосов
/ 13 сентября 2018

Привет! У меня есть преобразование, в котором я пытаюсь создать статический элемент, в котором открывающие и закрывающие теги сохраняются в выводе.

Например, я пытался ...

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" encoding="ISO-8859-1"/>
<xsl:template match="/">
<root>
<child>
<!--static values-->
<xsl:element name="ad_version"></xsl:element>
<action_code></action_code>
</child>
</root>
</xsl:template>
</xsl:stylesheet>

Это выводит следующее:

<?xml version="1.0" encoding="iso-8859-1"?>
<root>
  <child>
    <ad_version />
    <action_code />
  </child>
</root>

Мне нужно ...

<ad_version></ad_version>
<action_code></action_code>

Мысли?

Спасибо.

1 Ответ

0 голосов
/ 13 сентября 2018

Официально нет разницы между пустыми (<a></a>) и атомарными (<a />) тегами; поэтому у вашего поставщика есть ошибка, если он не может принять эти данные / на самом деле он должен исправить их, так как они не соответствуют стандартам.

Однако, если вам нужно взломать ваш код, чтобы соответствовать их стандартам, есть способы ...

  • Если вы используете Microsoft .Net XslCompiledTransform , вы можете заполнить теги <xsl:value-of select="''" />; то есть код, который выводит пустой во время выполнения. См. Пример скрипта XSLT

  • Если вы используете Saxon , вы можете переключить выход с xml на xhtml, например. <xsl:output method="xhtml". См. Пример скрипта XSLT .

Что касается других двигателей, дайте нам знать, и мы можем попытаться найти взлом. Для многих изменение вывода на html, скорее всего, сработает, но потеряет декларацию XML (<?xml version="1.0" encoding="ISO-8859-1"?>), что может вызвать другие проблемы, особенно если вы используете символы за пределами обычного диапазона ASCII.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...