【发布时间】:2012-01-01 04:57:37
【问题描述】:
我需要能够使用 XSLT 创建以下格式的 XML 元素:
<element foo="x" bar="y" />
我似乎仅限于:
<element foo="x" bar="y"></element>
原因是我们有一个流程改变,但客户端的接口不能改变。您可能会建议这些本质上是相等的,您是对的,但是我们不能假设我们的客户正在使用合理的 XML 解析技术。
我试过了:
<Mapping>
<xsl:attribute name="Source">
<xsl:value-of select="@Source"/>
</xsl:attribute>
<xsl:attribute name="Destination">
<xsl:value-of select="@Destination"/>
</xsl:attribute>
</Mapping>
这显然添加了不需要的结束标记,并且:
<xsl:element name="Mapping">
<xsl:attribute name="Source">
<xsl:value-of select="@Source"/>
</xsl:attribute>
<xsl:attribute name="Destination">
<xsl:value-of select="@Destination"/>
</xsl:attribute>
</xsl:element>
这仍然添加了不需要的结束标记。
谁能帮忙?
【问题讨论】:
-
两者在语义上是相同的。如果您的客户认为这是一种变化,那么这肯定是他们的问题而不是您的问题吗?
-
您能否向我们展示进行转换的 .NET 代码?没有 XSLT 方法可以强制使用某种格式来序列化空元素,例如
<foo/>或<foo /但据我所知.NET 的 XmlWriter 实现默认输出<foo />而不是<foo></foo>所以我很惊讶你说你得到了带有结束标签的长格式。 -
谷歌搜索给出了social.msdn.microsoft.com/Forums/en/xmlandnetfx/thread/…。你试过了吗?
-
客户认为这些不同,这是我们的问题。有多个 PAYING 客户有自己的实现,有些在技术上不是最好的实现方式,但它适用于他们。在对解析 XML 的正确方法提出任何意见之前,这是一天结束时的生意和金钱谈判