您可以使用XSL轉換XML數據轉換爲可以使用XSD模式進行驗證的表單。這不需要任何特殊的定製工具。
輸入數據:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/users">
<users>
<xsl:apply-templates/>
</users>
</xsl:template>
<xsl:template match="//user">
<xsl:variable name="key" select="@key"/>
<xsl:variable name="value" select="@value"/>
<xsl:element name="{$key}">
<xsl:value-of select="$value"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
爲以下形式:
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user key="username" value="Test"/>
<user key="age" value="27"/>
<user key="email" value="[email protected]"/>
</users>
可以用下面的變換來翻譯
<?xml version="1.0" encoding="UTF-8"?>
<users>
<username>Test</username>
<age>27</age>
<email>[email protected]</email>
</users>
而且可以很容易地與驗證標準XSD架構:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="users">
<xs:complexType>
<xs:sequence>
<xs:element name="username" type="xs:string"/>
<xs:element name="age" type="xs:positiveInteger"/>
<xs:element name="email">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[email protected]+\.[^.]+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>