Преобразование XML - удаление разрыва строки после объявления XML - PullRequest
0 голосов
/ 21 января 2019

После преобразования XML я получаю следующий результат:

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:[..]><Tag1></tag1><Tag2></Tag2>[..]</Document>

мне нужно, чтобы выходной файл был в одной строке, как следующее:

<?xml version="1.0" encoding="UTF-8"?><Document xmlns="urn:iso:std:[..]><Tag1></tag1><Tag2></Tag2>[..]</Document>

Единственное решение, которое работало до этой даты, - не отображать объявление, но я бы не стал этого делать, если есть альтернатива.

Мой XSL шаблон запускается так:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
                [...]
                xmlns:bpm="http://xmlns.oracle.com/bpmn20/extensions"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:ora="http://schemas.oracle.com/xpath/extension">

  <xsl:decimal-format name="decdot" decimal-separator="."/>
  <xsl:output method="xml" version="1.0" encoding="UTF-8"/>
  <xsl:template match="/">
    <Document>
      [...]
    </Document>
  </xsl:template>
</xsl:stylesheet>

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Я нашел решение, которое выглядит для меня скорее как резиновая лента, чем как фактическое исправление, но оно работает просто отлично, вам это кажется законным?

Я решил опустить объявление, а затем принудительно преобразоватьзаписать это вручную через код, подобный этому:

<xsl:output method="xml" version="1.0" encoding="UTF-8" omit-xml-declaration="yes"/>
  <xsl:template match="/">
    <xsl:text disable-output-escaping="yes">&lt;?xml version="1.0" encoding="UTF-8"?></xsl:text>
    <Document>
      [...]
    </Document>
  </template>
0 голосов
/ 21 января 2019

Для решения я опускаю пространства имен используемого XML.

Для этого я бы просто скопировал весь контент через XPath 1.0 и принудительно использовал указанную копию XML без отступа и форматирования таблицы стилей XSLT.

Ввод XML

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:[..]"><Tag1></Tag1><Tag2></Tag2></Document>

Таблица стилей XSLT 1.0

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

    <xsl:output encoding="utf-8" indent="no" method="xml" omit-xml-declaration="no"/>
    <xsl:decimal-format name="decdot" decimal-separator="."/>

    <xsl:template match="/">
        <xsl:copy-of select="/"/>
    </xsl:template>

</xsl:stylesheet>

Вывод XML

<?xml version="1.0" encoding="utf-8"?><Document xmlns="urn:iso:std:[..]"><Tag1/><Tag2/></Document>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...