XSD架构:使用带有expectedContentTypes的多个xmime

时间:2012-03-30 09:16:46

标签: xsd schema

我有一个带有元素的XSD \ schema(如下所示)。该元素应具有CSV或XML数据。我不确定要使用什么expectedContentTypes。我可以想到以下但不确定:

  

文本/ *

     

* / *

<xs:element name="Data" type="xs:base64Binary" xmime:expectedContentTypes="text/*"/>

还是有其他方法吗?喜欢

  

“文本/ CSV;文本/ xml” 的

1 个答案:

答案 0 :(得分:1)

严格地说,您的元素数据类型应该来自xmime:base64Binary。 text/*是正确的,或者text/csv,text/xml - 应该使用逗号。

但是,为什么在发送文本时进行二进制编码?需要考虑的一件事是消息的大小,使用base64编码,结果将占用大约30%的开销。

你有没有考虑过这个XSD:

<?xml version="1.0" encoding="utf-8" ?>
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)-->
<xsd:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="Data">
        <xsd:complexType mixed="true">
            <xsd:sequence>
                <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="skip"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

以下任何XML都可以正常工作; XML:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns="http://tempuri.org/XMLSchema.xsd">
     <something></something>
</Data>

CSV:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns="http://tempuri.org/XMLSchema.xsd">
    A,B,B
    1,2,3
</Data>

换句话说,您可以拥有XML,CSV或两者。如果您不想要两者,那么有一些技巧可以确保更强大的数据输入。