Saya ingin menambahkan di awal dokumen xml.

Keluaran yang diinginkan:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.044/cXML.dtd">
<cXML payloadID="1622098213085.433369813.000000243@TzcfvgHhQOcUqW3reWym5GQWUB4=" timestamp="2021-05-26T23:50:13-07:00" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <Response>
        <Status code="200" text="OK"/>
    </Response>
</cXML>

Saya memiliki XSLT di bawah ini, tidak yakin bagaimana cara menambahkan

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

      <xsl:template match="/">
        <cXML version="{/cXML/@version}" payloadID="{/cXML/@payloadID}" timestamp="{/cXML/@timestamp}"
              signatureVersion="{/cXML/@signatureVersion}">
          <Response Id="{/cXML/Response/@Id}">
            <Status code="{/cXML/Response/Status/@code}" text="{/cXML/Response/Status/@text}"/>
          </Response>
        </cXML>
      </xsl:template>
    </xsl:stylesheet>

Saya mencoba di bawah dan tidak berhasil.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     version="1.0">

<xsl:output doctype-system="http://xml.cxml.org/schemas/cXML/1.2.044/cXML.dtd"/>

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>

XSLT test

Ini berfungsi di alat uji XSLT lainnya, jadi XSLT bagus.

enter image description here

1
Yatan 27 Mei 2021, 23:55

1 menjawab

Jawaban Terbaik

Tambahkan xsl:output dengan doctype-system:

<xsl:output doctype-system="http://xml.cxml.org/schemas/cXML/1.2.044/cXML.dtd"/>
0
Mads Hansen 27 Mei 2021, 21:10