Question

Utilisation d’une DTD de document, j’ai procédé comme suit:

fichier.xsl:

<!DOCTYPE xsl:stylesheet[
  <!ENTITY red "rgb(255,0,0)">
]>

<xsl:stylesheet>
   [...]
   <xsl:attribute name="color">&red;</xsl:attribute>
   [...]
</xsl:stylesheet>

Je voulais tout changer en XML-Schema. Alors j'ai essayé:

fichier.xsd:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="red" type="xs:token" fixed="rgb(255,0,0)" />
</xsd:schema>

fichier.xsl:

<xsl:stylesheet
    xmlns:defs="http://www.w3.org/2001/XMLSchema-instance"
    defs:noNamespaceSchemaLocation="file.xsd">

    [...]
    <xsl:attribute name="color"><defs:red/></xsl:attribute>
    [...]
</xsl:stylesheet>

Maintenant, l’analyse du fichier via Xalan rouge n’est pas traduite comme dans la version DTD. Où est mon erreur? Les fichiers de schéma ne sont-ils pas lus pendant le processus d'analyse?

Était-ce utile?

La solution

L'attribut fixed dans une définition d'élément n'indique pas à un analyseur d'effectuer une substitution de texte. Cela signifie simplement que la valeur de l'élément doit toujours être la même.

En fait, je pense que votre XSLT produit du code XML qui ne sera pas validé par rapport à votre schéma, car la valeur de l'élément <defs:red> n'est pas & "; rgb(255,0,0) &". Même si vous avez utilisé default au lieu de <=>, il ne s'agit pas d'une substitution de texte. Cela signifie simplement que, si aucune valeur n'est spécifiée, lorsque la valeur est interrogée dans une instance DOM, vous trouverez la valeur définie sur & "; <=> &".

.

Autres conseils

L'utilisation de schémas pour déclarer vos règles structurelles (plutôt que DTD) ne vous empêche pas d'utiliser des entités.

La manière dont vous utilisez les références d'entité pour substituer le contenu déclaré ne change pas.

Les références d'entité n'ont pas besoin d'être déclarées uniquement dans les fichiers DTD. Vous pouvez les déclarer en ligne dans vos fichiers XML.

<?xml version="1.0"?>
<!DOCTYPE foo [
  <!ENTITY red "rgb(255,0,0)">
]>
<foo>
  <bar color="&red;" /> 
</foo>

http://www.ibm.com/developerworks/xml /library/x-tipentref.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top