是否有一些工具可以将带有架构收缩的xml转换为二进制

时间:2013-10-08 02:17:07

标签: xml xsd xerces

给定下面的模式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>

1 个答案:

答案 0 :(得分:2)

在Saxon中,我们已经实现但尚未发布此处描述的EXPath二进制模块:

http://expath.org/spec/binary

可以解决这个问题。然后,您可以使用

等规则编写模式感知的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>