1

XSLT 1.0 を使用して XML の下に構築する方法がわかりません

<values>
      <field name="abc"></field>
      <field name="nch"></field>
</values>

要素の開始タグと終了タグの間にスペースがあってはなりません。できるだけ早く助けてください。

ありがとう。

4

2 に答える 2

2

Saxon では、出力方法を「html 」に変更する必要があります。

例:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" indent="yes"/>
  <xsl:template match="/">
    <values>
      <field name="abc"></field>
      <field name="nch"></field>
    </values>
  </xsl:template>
</xsl:stylesheet>

vs2010 で機能する回避策を次に示します。

例 1:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <values>
      <field name="abc">
        <xsl:value-of select="substring-before(' ',' ')"/>
      </field>
      <field name="nch">
        <xsl:value-of select="substring-before(' ',' ')"/>
      </field>
    </values>
  </xsl:template>
</xsl:stylesheet>

例 2:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <xsl:element name="values">
      <xsl:element name="filed">
        <xsl:attribute name="name">abc</xsl:attribute>
        <xsl:value-of select="substring-before(' ',' ')"/>
      </xsl:element>
      <xsl:element name="filed">
        <xsl:attribute name="name">nch</xsl:attribute>
        <xsl:value-of select="substring-before(' ',' ')"/>
      </xsl:element>
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>

出力:

<?xml version="1.0" encoding="utf-8"?>
<values>
  <filed name="abc"></filed>
  <filed name="nch"></filed>
</values>
于 2013-01-22T13:36:55.523 に答える
0

<x></x>との違い<x/>は純粋に字句であり、最終的な出力はシリアライザーによって実行されるため、通常はXSLTプロセッサーで制御できません。

一部のXSLTプロセッサ(組み込みのシリアライザを使用)では、空の要素の完全な形式を出力できる場合があります。ただし、Saxonなどの他のプロセッサでは、これは(簡単に)不可能です。

于 2013-01-22T14:22:40.767 に答える