例如:
<employee>
<name>Ragu</name>
<city>Chennai</city>
<age>25</age>
</employee>
请求Schema文件中定义了上述请求xml元素的数据类型。 name是string,city是string,age是int数据类型。
<employee>
<name type="string">Ragu</name>
<city type="string">Chennai</city>
<age type="int">25</age>
</employee>
请有人为此转型提供解决方案。在此先感谢
答案 0 :(得分:4)
您可以使用document()
函数来阅读您的架构,例如:
输入XML:
<employee>
<name>Ragu</name>
<city>Chennai</city>
<age>25</age>
</employee>
架构:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="city" type="xs:string" />
<xs:element name="age" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="node()">
<xsl:variable name="type" select="substring-after(document('schema.xsd')
//xs:element[@name = name(current())]/@type, ':')"/>
<xsl:copy>
<xsl:if test="$type">
<xsl:attribute name="type">
<xsl:value-of select="$type"/>
</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
生成所需的输出XML:
<employee>
<name type="string">Ragu</name>
<city type="string">Chennai</city>
<age type="int">25</age>
</employee>