0

並べ替えて別のファイルに保存する必要がある XML があります。そのためにxsltを実行しましたが、正常に動作します。ただし、xml の終了後にコメントがある場合、これらのコメントはコピーされません。ルート タグの終了後に存在するコメントをコピーする xslt ステートメントが必要です。以下は、次のことを説明するコードです。

元の XML

    <Company>
      <Employee id="100" Name="John" >
        <Salary value="15000"/>
        <Qualification text="Engineering">
        <State name="Kerala" code="02">
        <Background text="Indian">
      </Employee>
    </Company>

<!--This file contains Employee information-->
<!--Please refer the file to get information about an employee-->

XSLT 変換コード

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:output indent="yes"  omit-xml-declaration="yes" method="xml" />
  <xsl:strip-space elements="*"/>

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

  <xsl:template match="Employee">
    <xsl:copy>
      <xsl:apply-templates select="Qualification"/>
      <xsl:apply-templates select="Salary" />
      <xsl:apply-templates select="Background"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

得られた出力

<?xml version="1.0" encoding="utf-8"?>
<Company>
  <Employee>
    <Qualification text="Engineering" />
    <Salary value="15000" />
    <Background text="Indian" />
  </Employee>
</Company>

必要な出力

<?xml version="1.0" encoding="utf-8"?>
<Company>
  <Employee>
    <Qualification text="Engineering" />
    <Salary value="15000" />
    <Background text="Indian" />
   </Employee>
</Company>

<!--This file contains Employee information-->
<!--Please refer the file to get information about an employee-->
4

1 に答える 1

0

あなたの変容には何の問題もありません。を使用して同じ XML (整形式になるように修正) に対して同じ XSLT を実行すると、末尾のコメントを含む正しい出力が得られます (ただし、スタイルシートのおよびxsltprocにより、元のインデントとスペースが失われています)。strip-spaceindent="yes"

<Company>
  <Employee>
    <Qualification text="Engineering"/>
    <Salary value="15000"/>
    <Background text="Indian"/>
  </Employee>
</Company><!--This file contains Employee information-->
<!--Please refer the file to get information about an employee-->

使用しているプロセッサまたは XML パーサー (おそらく で判断すると、Microsoft のパーサーxmlns:msxsl="urn:schemas-microsoft-com:xslt") は、ドキュメント要素の終了タグの後のコメントを無視しているようです。

于 2013-07-31T12:13:58.793 に答える