我想为参数元素定义一个xsd,这将允许我以下列方式定义参数
<parameter name="save.type" value="attribute" />
或
<parameter name="payload">
<p:AdderProcessRequest xmlns:p="http://wso2.org/bps/sample">
<!--Exactly 1 occurrence -->
<x xmlns="http://wso2.org/bps/sample">{@xvalue}</x>
<!--Exactly 1 occurrence -->
<y xmlns="http://wso2.org/bps/sample">{@yvalue}</y>
</p:AdderProcessRequest>
</parameter>
在第二种方法中,参数元素中的xml内容事先是未知的,因此它可以是任何内容。
以下是我创建的xsd,但它似乎不起作用。
<xs:element name="parameter" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="value" use="optional"/>
</xs:complexType>
</xs:element>
对此的任何帮助将不胜感激。 提前致谢
答案 0 :(得分:25)
我在通过这里发布的规格之后能够弄明白,所以其他人可能需要它:)。您必须添加processContents="skip"
,以便不会处理内容。
<xs:element name="parameter" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:any processContents="skip" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="value" use="optional"/>
</xs:complexType>