2010-06-16 5 views
3

J'ai besoin d'une clarification sur l'un des scénarios de <xsd:any>.Comment utiliser xsd: any avec un espace de noms?

si la valeur de l'attribut est namespace##any et l'attribut processContents n'existe pas (la valeur par défaut est strict)?

Ce qui sera le cas ici, le processeur doit-il valider les éléments par rapport aux schémas?

Exemple de clarification. Voici la section XSD:

...... 
<xsd:complexType name="reservedType"> <!-- a declaration for an element `reserved` --> 
<xsd:sequence> 
    <xsd:any namespace="##any"/> 
</xsd:sequence> 
</xsd:complexType> 
.......... 

Et voici le XML:

<c:reserved> 
<message xmlns="unknown_schema"> 
<msg>Hello</msg> 
</message> 
</c:reserved> 

Chaque fois que je tente de valider ce XML par rapport au schéma ci-dessus, je reçois:

The matching wildcard is strict, but no declaration can be found for element 'message'. 

Comment cela venir, et l'espace de noms est ##any?

Répondre

5

Le modèle de traitement par défaut pour xsd:anyest strict. Alors oui, vous devrez définir cet élément à lax ou skip:

<xsd:sequence> 
    <xsd:any namespace="##any" processContents="lax"/> 
</xsd:sequence> 

S'il vous plaît se référer à Section 3.10.2 de la spécification du schéma XML. Voir le tableau ci-dessous, sur "Wildcard Schema Components", en particulier l'attribut du contenu du processus.

Questions connexes