From: Christian David (cdavid@rennes.jouve.fr)
Date: 25/09/2002 - 15:52
Ce qui est ambigu c'est :
1 ) Des regles d'ecriture d'elements dans les DTDs qui se contredisent et
qui interdisent(d'après les syntaxes non autorisées) ce que XML permet :
on ne peut pas ecrire
<!ELEMENT AAA (BBB | #PCDATA )> ou
<!ELEMENT AAA (BBB | #PCDATA )*> ou
<!ELEMENT AAA ( #PCDATA | BBB | #PCDATA )>
alors qu'on peut ecrire
<!ELEMENT AAA (#PCDATA | BBB)> ou
<!ELEMENT AAA (#PCDATA | BBB)*>
Si on développe la 5eme règle, on arrive à la 3eme ??? A priori il s'agirait
donc d'un pb de syntaxe de DTD si je vous comprend ?
2) un xsl:value-of select="text()" ne ramene que le 1er noeud texte du tag
courant alors que dans les spec xpath il est ecrit : child::text()
sélectionne tous les noeuds textuels du noeud contextuel ???
c'est le sens de ma remarque, il est effectivement possible de récupérer
tous le contenu textuel des fichiers fournis en exemple, mais pas de la
manière simple à laquelle on s'attend. Pourquoi ?
on devrait pouvoir le faire avec la xsl suivante :
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"
href="E:\Autres\tools\xml\editeur\xml_notepad\test5.xsl"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<xsl:element name="resultat">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="AAA">
<xsl:value-of select="child::text()"/>
<xsl:apply-templates select="*"/>
</xsl:template>
<xsl:template match="BBB">
<xsl:value-of select="child::text()"/>
</xsl:template>
</xsl:stylesheet>
or le résultat est le suivant :
<?xml version="1.0" encoding="UTF-8"?><resultat>
blablabla1
blablabla2blablabla6blablabla8blablabla10</resultat>
Si vous avez une solution simple je la prend volontier.
cordialement,
-----Message d'origine-----
De : xml-tech-bounce@xmlfr.org [mailto:xml-tech-bounce@xmlfr.org]De la
part de Eric van der Vlist
Envoyé : mercredi 25 septembre 2002 13:34
À : xml-tech@xmlfr.org
Objet : [xml-tech] Re: XML ambigu et parseur
On Wed, 2002-09-25 at 13:13, Christian David wrote:
>
>
> A priori le fragment qui suit n'est pas conforme à la définition XML
puisque
> AAA possède un contenu "mixed" et que dans ce cas tout le texte doit être
> avant les tags. Néanmoins aucun parseur(en mode non validant et donc sans
> DTD) ne semble détecter ce problème.
>
> ex 1 : xml seul
> test1.xml
> <?xml version="1.0" encoding="UTF-8"?>
> <AAA>
> blablabla
> <BBB>blablabla</BBB>
> blablabla
> </AAA>
> ==> Ex avec msxml en parsing non validant pas d'erreur détectée
> Question : Est-ce normal ?
Oui, les contenus mixtes sont tout à fait autorisés!
>
>
> ex2 : test2.xml + test2.dtd
>
> test2.xml
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE AAA SYSTEM "test2.dtd">
> <AAA>
> blablabla
> <BBB>blablabla</BBB>
> blablabla
> </AAA>
>
> test2.dtd :
> <!ELEMENT AAA (#PCDATA | BBB)*>
> <!ELEMENT BBB (#PCDATA)>
>
> ==> Ex avec msxml en parsing VALIDANT pas d'erreur détectée
> Question : Est-ce normal ?
Oui, pourquoi ne le serait-ce pas?
Cela définit simplement qu'à l'intérieur de AAA vous autorisez un nombre
quelconque de noeuds texte et d'éléments BBB dans n'importe quel
ordre...
==> OUI mais sachant que <!ELEMENT AAA (BBB | #PCDATA )*> est interdit c'est
troublant non !!!
>
> ex3 : test3.xml + test3.dtd
>
> test3.xml
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE AAA SYSTEM "test3.dtd">
> <AAA>
> blablabla
> <BBB>blablabla</BBB>
> blablabla
> </AAA>
>
> test3.dtd :
> <!ELEMENT AAA (#PCDATA | BBB |#PCDATA)>
> <!ELEMENT BBB (#PCDATA)>
>
> ==> Ex avec msxml en parsing VALIDANT :
> erreur détectée :
> A name was started with an invalid character.
> <!ELEMENT AAA (#PCDATA | BBB | #PCDATA )>
>
> Ceci me parait normal, ce qui est suprenant est que la DTD2 permet d'avoir
> le XML ce qui est défini dans la DTD 3 ?
> Comment peut-on controler ces ambiguités ?
> Connaissez-vous des outils permettant de controler de telles ambiguités au
> niveau du XML et de la DTD.
Quelles ambiguités?
==> cf. explication au debut du mail
Ce que ni les DTDs ni W3C XML Schema ne permettent
de faire c'est de contrôler la position des noeuds textes par rapport
aux sous élements dans le cas de contenus mixtes. Est-ce cela que vous
voulez dire?
Si vous souhaitez pouvoir le faire, il faut utiliser Relax NG ou
Schematron...
==> je voudrais recuperer certaines partie du texte de manière simple (comme
défini dans les spec xpath)
voir detail au debut du mail
>
> A priori une telle ambiguité ne permet pas par exemple à un translateur
XSLT
> de pouvoir recuperer à coup sur tous les textes.
>
> ex : recuperer tous les textes de AAA et BBB mais pas CCC ??? pas
simple...
> test4.xml
> <AAA>
> blablabla
> <BBB>blablabla<CCC>blablabla</CCC>blablabla
> </BBB>
> blablabla
> <CCC>blablabla</CCC>
> blablabla
> <BBB>blablabla</BBB>
> blablabla
> <CCC>blablabla</CCC>
> blablabla
> </AAA>
Bien sur que si! Qu'est ce qui vous fait penser le contraire?
==> cf. debut du mail
Cordialement,
Eric van der Vlist
--
Rendez-vous à Paris.
http://www.technoforum.fr/integ2002/index.html
------------------------------------------------------------------------
Eric van der Vlist http://xmlfr.org http://dyomedea.com
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|