【问题标题】:is there some tool that could convert xml with schema constriction into binary是否有一些工具可以将具有架构限制的 xml 转换为二进制文件
【发布时间】:2013-10-08 02:17:06
【问题描述】:

给定一个像下面这样的模式 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>

【问题讨论】:

  • “转换为二进制”。你到底想达到什么目的?您使用什么语言(编程语言而不是标记语言)。请给出您要执行的操作的精确示例:“当 XML 文件显示 X 时,我希望我的变量 A 包含 B 并在我使用 ***** 之类的打印命令时打印为 011011101010011”

标签: xml xsd xerces


【解决方案1】:

在撒克逊我们已经实现但尚未发布此处描述的 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>

【讨论】:

    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2023-04-07
    • 2012-01-15
    • 1970-01-01
    • 2021-04-13
    • 2023-03-20
    相关资源
    最近更新 更多