2009-08-27 9 views
1

は私も1つのXSDから別のXSDにXMLを変換する方法は?

<?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> 
を次のようにあるXSDを持っている私は、次の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> 

によって '支配' され、次のXML

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

を持っていると言います


私の最初の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> 

はそれを試していないが、それは作業状態にこれを取得するために多くを取るべきではありません!

EDIT: (テストに周りに手に入れた、それが動作!)