如何将XML从一个XSD转换为另一个XSD?
假设我有以下XML如何将XML从一个XSD转换为另一个XSD?,xml,xslt,xsd,Xml,Xslt,Xsd,假设我有以下XML <?xml version="1.0" encoding="utf-8"?> <Person> <FirstName>Bjorn</FirstName> <LastName>Ellis-Gowland</LastName> </Person> 比约恩 埃利斯·高兰德 由以下XSD(XML模式)管理的 我还有一个XSD,如下所示 <?xml version="1.0" e
<?xml version="1.0" encoding="utf-8"?>
<Person>
<FirstName>Bjorn</FirstName>
<LastName>Ellis-Gowland</LastName>
</Person>
比约恩
埃利斯·高兰德
由以下XSD(XML模式)管理的
我还有一个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数据到匿名Person.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 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>