2013-03-25 2 views
2

XML-RPC 메서드 호출을 위해 XSD를 가지고 있거나 편집하는 방법을 알고있는 사람이 있습니까? XML-RPC 스키마 .xsd

나는 발견이 하나 유효한 XML-RPC의 경우 허용 나던 그러나 MSDN Xml Rpc Schema

. 오프듯한 비트이다

<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> 
.... 

<value> 소자 내부의 텍스트 문자열로 디폴트 때문이다. 그러나 위의 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> 

하지만 그 수 : 사양에 따라 유효하지 말아야 <value>testtext<string>with more text</string></value>.

Value 요소에 데이터 OR 요소가 포함될 수 있지만 두 요소가 혼합되어 있지 않도록 만드는 데 문제가 있습니다.

누구든지 위의 문제를 해결하는 방법을 알고 있거나 제공 할 수있는 xsd가 있다면 정말 감사 할 것입니다.

답변

1

원하는 것은 XSD 1.0을 사용하여 설명 할 수 없습니다. 개념적으로, 당신이 원하는 것은 콘텐츠 모델의 "연합"입니다 : 텍스트 만 및 요소 만.

Schematron 추가 또는 XSD 1.1 로의 이전과 같이 다른 방법을 사용할 수있는 경우 추가 정보로 질문을 업데이트하십시오.

+0

아 나는 xsd에 대한 지식이 부족하고 실패한 시도로 대머리가 된 것을 지적 해 주셔서 감사합니다. 내가 RELAXng 스키마를 사용하도록 전환했는데 필요한 모든 작업을 수행하는 것 같습니다. 감사 – DJOodle