xml - 如何将 XML 从一个 XSD 转换为另一个 XSD?

标签 xml xslt xsd

假设我有以下 XML

<?xml version="1.0" encoding="utf-8"?>
<Person>
  <FirstName>Bjorn</FirstName>
  <LastName>Ellis-Gowland</LastName>
</Person>

这是由以下 XSD(XML 架构)“管理”的

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema elementFormDefault="qualified"
        xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Person">
    <xs:complexType>
      <xs:all>
        <xs:element name="FirstName" type="xs:string" />
        <xs:element name="LastName" type="xs:string" />
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>

我还有一个 XSD,如下

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema elementFormDefault="qualified"
        xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="AnonymousPerson">
    <xs:complexType>
      <xs:all>
        <xs:element name="FirstNameInitial">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:length value="1" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="LastNameInitial">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:length value="1" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>

我的初始 Person.xsd XML 可以转换为对我的 AnonymousPerson.xsd 有效的状态。

如何定义有效 Person.xsd XML 数据到 AnonymousPerson.xsd XML 数据的转换?

谢谢!!!!

最佳答案

您需要的xslt大致是:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/" >
   <xsl:for-each select='//Person'>
      <AnonymousPerson>
         <FirstNameInitial>
            <xsl:value-of select="substring(FirstName, 1,1)"/>
         </FirstNameInitial>
         <LastNameInitial>
            <xsl:value-of select="substring(LastName, 1,1)"/>
         </LastNameInitial>
      </AnonymousPerson>
    </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

尚未尝试过,但应该不需要太多时间即可使其进入工作状态!

编辑: (抽出时间进行测试,它有效!)

关于xml - 如何将 XML 从一个 XSD 转换为另一个 XSD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1342091/

相关文章:

java - 尝试使用 SAXParser 解析 Android 应用程序中的 XML

java - 嵌套的 XML 转换器

xml - 使用 XPATH 和 XSLT 根据属性值的某些相等条件在 XML 中提取相关的不同元素标签

xml - 可以使用 'role' 属性对 DocBook 元素进行子类化吗?如果是这样,怎么办?

xml - DTD与XSD定义的XML语言范围

java - 如何在 jaxb 中编写我无法控制的对象?

java - spring中如何为xml中定义的带有父级的bean选择构造函数?

c# - 没有 Unicode 字节顺序标记。无法切换到 Unicode

xml - 如何在Odoo中自定义 TreeView 的求和函数?

xml - XSLT 和 XSLFO 命名空间