Saturday, 21 November 2015

XML : XML Schema: keyref with optional field

I wonder if it's possible to use keyref element with optional fields.

e.g. Given the following schema:

  <element name="myElement" type="myType">      <sequence>          <element name="subElem">              <complexType>                  <attribute name="name" type="string"/>                  <attribute name="type" type="string"/>              </complexType>          </element>          <element name="subElem2">              <complexType>                  <sequence>                      <element name="subSubElem" minOccurs="0">                          <complexType>                              <attribute name="type" type="string"/>                          </complexType>                      </element>                  </sequence>                  <attribute name="name" type="string"/>              </complexType>          </element>      </sequence>      <key name="uniqueSubElem">          <selector xpath="subElem"/>          <field xpath="@name"/>          <field xpath="@type"/>      </key>      <keyref name="uniqueSubElemRef" refer="uniqueSubElem">          <selector xpath="subElem2"/>          <field xpath="@name"/>          <field xpath="subSubElem/@type">      </keyref>  </element>    

In this example if I don't specify a subSubElem in the XML the validator will complain:

  Not enough values specified for <keyref name="uniqueSubElem"> identity constraint specified for element "myElement".    

I need both the minOccurs="0" and the keyref constraint, and if the field is not present simply don't want any check to be performed (as for NULL FOREIGN KEYs).

EDIT: Ignore namespaces for this example, I used default namespace for everything...

No comments:

Post a Comment