1

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

1 回答 1

2

在撒克逊我们已经实现但尚未发布此处描述的 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>
于 2013-10-08T07:21:34.730 回答