【问题标题】:XML-RPC Schema .xsdXML-RPC 模式 .xsd
【发布时间】:2013-03-25 16:45:28
【问题描述】:

是否有人拥有或知道如何编辑用于 XML-RPC 方法调用的 XSD?

我找到了这个:MSDN Xml Rpc Schema

但是它不允许有效的 XML-RPC 案例。似乎不对的一点是:

<xsd:complexType name="ValueType" mixed="true">
    <xsd:choice>
        <xsd:element name="i4"            type="xsd:int" />
        <xsd:element name="int"           type="xsd:int" />
        <xsd:element name="string"        type="ASCIIString" />
        <xsd:element name="double"        type="xsd:decimal" />
        <xsd:element name="Base64"        type="xsd:base64Binary" />
        <xsd:element name="boolean"       type="NumericBoolean" />
        <xsd:element name="dateTime.iso8601" type="xsd:dateTime" />
        <xsd:element name="array"         type="ArrayType" />
        <xsd:element name="struct"        type="StructType" />
    </xsd:choice>
</xsd:complexType>

根据the XML-RPC spec,以下是有效的:

...
<value>example text</value>
....

因为如果没有提供类型元素,&lt;value&gt; 元素内的文本默认为字符串。但是上面的 xsd 不会验证它。

我尝试将其更改为:

<xsd:complexType mixed="true" name="ValueType">
    <xsd:choice minOccurs="0" maxOccurs="1">
        <xsd:element name="i4"            type="xsd:int" />
        <xsd:element name="int"           type="xsd:int" />
        <xsd:element name="string"        type="ASCIIString" />
        <xsd:element name="double"        type="xsd:decimal" />
        <xsd:element name="Base64"        type="xsd:base64Binary" />
        <xsd:element name="boolean"       type="NumericBoolean" />
        <xsd:element name="dateTime.iso8601" type="xsd:dateTime" />
        <xsd:element name="array"         type="ArrayType" />
        <xsd:element name="struct"        type="StructType" />
    </xsd:choice>
</xsd:complexType>

但这允许:&lt;value&gt;testtext&lt;string&gt;with more text&lt;/string&gt;&lt;/value&gt; 根据规范不应该是有效的。

我在尝试使 Value 元素可以包含数据或元素,但不能同时包含两者时遇到了麻烦。

如果有人知道如何解决上述问题或有他们可以提供的可用 xsd,将不胜感激。

【问题讨论】:

    标签: xml xsd xml-rpc


    【解决方案1】:

    使用 XSD 1.0 无法描述您想要的;从概念上讲,您想要的是内容模型的“联合”:仅文本和仅元素。

    如果您可以采用其他方式,例如添加 Schematron 或迁移到 XSD 1.1(支持不佳),请使用其他信息更新您的问题。

    【讨论】:

    • 啊,我对 xsd 的了解有限,感谢您指出我们之前因尝试失败而秃顶。我已经改用 RELAXng 模式,这似乎可以满足我的所有需求。谢谢
    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 2015-09-04
    • 2023-03-27
    • 1970-01-01
    • 2017-01-03
    • 2011-04-24
    • 2012-10-14
    • 2011-08-28
    相关资源
    最近更新 更多