使用XSLT 1.0创建Empty元素

时间:2013-01-22 10:34:51

标签: xslt-1.0

我无法弄清楚如何使用XSLT 1.0构建以下XML

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

元素start和end标签之间不应有任何空格。 请尽快帮助我。

感谢。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

<x></x><x/>之间的区别纯粹是词汇,通常不能由XSLT处理器控制,因为最终输出是由Serializer执行的。

使用一些XSLT处理器(使用其内置的序列化程序),可以输出完整形式的空元素。但是,对于其他处理器,例如Saxon,这不是(容易)可能的。