1

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

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

元素开始和结束标记之间不应有任何空格。请尽快帮助我。

谢谢。

4

2 回答 2

2

在撒克逊语中,您必须将输出方法更改为“ 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 处理器控制,因为最终输出是由 Serializer 执行的。

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

于 2013-01-22T14:22:40.767 回答