2012-03-30 45 views
0

我有一个带有元素的XSD \架构(如下所示)。该元素预计具有CSV或XML数据。我不确定使用什么expectedContentTypes。我能想到以下,但不能肯定的:XSD架构:与预期的内容类型一起使用多个xmime

文/ *

*/*

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

或有任何其他方式?像

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

回答

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的,或两者兼而有之。如果你不想这两者,有一些技巧可以确保更强大的数据类型。