如何将一个XSD的XML转换为另一种非常相似但具有不同XSD文件的XML格式?

use*_*064 5 xml xslt xsd transform

如何将一个XSD的XML转换为另一种非常相似但具有不同XSD文件的XML格式?XSD非常大并且有许多复杂类型,但实际的XML看起来非常相似.

我有两个XSD文件和两个XML文件 - 它们都成功验证了其中一个XSD文件.我想将其中一个XML文件转换为另一个,以便我只能使用一个类进行进一步的操作.

我如何在.NET 4.0和c#4.0中执行此操作?我必须使用XSLT吗?如果我必须使用XSLT,我该怎么做?我不确定我是否期待创建一个XSLT文档.

使用AutoMapper将一个XML类转换为另一个XML类是一种噩梦.当我查看XML它是如此相似所以我认为可能有一个更简单的方法...

Dan*_*ley 2

我肯定会使用 XSLT。如果 XML 非常相似,那么应该不会太困难。从身份转换开始,然后在需要更改时覆盖它。

以下示例仅将“foo”元素更改为“bar”元素:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output indent="yes"/>
  <xsl:strip-space elements="*"/>

  <!--Identity Template. This will copy everything as-is.-->
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <!--Change "foo" element to "bar" element.-->
  <xsl:template match="foo">
    <bar>
      <xsl:apply-templates select="@*|node()"/>
    </bar>
  </xsl:template>

</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

资源:

http://www.w3.org/TR/xslt

http://www.jeniitennison.com/xslt/

http://www.mulberrytech.com/quickref/XSLT_1quickref-v2.pdf

http://www.mulberrytech.com/xsl/xsl-list/index.html#archive

此外,XSLT 的很大一部分是 XPath。如果您没有开发工具(我最喜欢的是oXygen,@DimitreNovatchev 有一个很棒的工具,称为XPath Visualizer