给定下面的模式xsd和xml文件,是否有任何工具可以将xml数据转换为“0x000000ff 0x61626364”的二进制表示?
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="testElem" type="testType"/>
<xs:complexType name="testType">
<xs:sequence>
<xs:element name="myID" maxOccurs="1" minOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:unsignedInt"/>
</xs:simpleType>
</xs:element>
<xs:element name="myName" maxOccurs="1" minOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="utf-8" ?>
<testElem>
<myID>255</myID>
<myName>abcd</myName>
</testElem>
答案 0 :(得分:2)
在Saxon中,我们已经实现但尚未发布此处描述的EXPath二进制模块:
可以解决这个问题。然后,您可以使用
等规则编写模式感知的XSLT样式表<xsl:template match="element(*, xs:unsignedBinary)">
<xsl:copy>
<xsl:value-of select="xs:hexBinary(bin:pack-integer(.))"/>
</xsl:copy>
</xsl:template>
<xsl:template match="element(*, xs:string)">
<xsl:copy>
<xsl:value-of select="xs:hexBinary(bin:encode-string(., 'us-ascii'))"/>
</xsl:copy>
</xsl:template>