假设我有以下 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/