2009-08-27 155 views
1

說我有下面的XML如何將XML從一個XSD轉換爲另一個XSD?

<?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.x有效的狀態SD。

如何將有效的Person.xsd XML數據轉換爲AnonymousPerson.xsd XML數據?

謝謝!!!!!

回答

3

你需要的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> 

有沒有嘗試過了,但它不應該花太多容易就進入了工作狀態這個!

編輯: (約得到了測試,它的工作原理!)