Bonjour,
J'ai une feuille XSLT à faire qui quand même nécessite 4 namespace en tout.
J'ai réalisé une feuille intermédiaire, mais je voudrais avant d'aller trop loin une explication de la part de personne qui ont compris comment fonctionne exactement les namespaces. Je ne m'en sors pas, les exemples du net en ont 2 au plus en général.
Je pars d'un feuille XML à un format suivant :
première étape, transformer la structure se trouvant dans la balise value en MathML. J'ai réussi à obtenir exactement ce que je voulais grâce à l'aide de personne du forum.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?xml version="1.0" encoding="UTF-8"?> <lss:semantics xmlns:lss="http://www.linguastream.org/LSS/2.0"> <lss:sem type="token" id="1"> <lss:text>La</lss:text> <lss:value><tag>det</tag><stag>def</stag><lemma>le</lemma></lss:value> </lss:sem> (...) </lss:semantics>
Voila l'exemple de ce que ca donne :
premier problème, pourquoi ce xmlns:lss="http://www.linguastream.org/LSS/2.0"> ? En fait il ne reste plus de balise lss donc il ne devrait plus y avoir ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?xml version="1.0" encoding="UTF-8"?> <math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:lss="http://www.linguastream.org/LSS/2.0"> <mfenced open="[" close="]"> <mtable columnalign="left"> <mtr> <mtd><mi>tag</mi> : det</mtd> </mtr> <mtr> <mtd><mi>stag</mi> : def</mtd> </mtr> <mtr> <mtd><mi>lemma</mi> : le</mtd> </mtr> </mtable> </mfenced> </math>![]()
la début de la page xslt :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:lss="http://www.linguastream.org/LSS/2.0" xmlns="http://www.w3.org/1998/Math/MathML"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
peut etre que je m'y prends mal ?
ensuite on complique, maintenant cette structure value transformée en MathML, ca ne suffit pas. Il faut transformer chaque élément sem de semantics en un paragraphe p de xhtml qui contiendra le texte de la balise text, et puis la sous structure MathML de value comme au dessus.
La encore je fais une page XSLT qui n'a pas grand chose de compliqué quand on a fait le truc au dessus, seulement encore problème de namespace.
Le résultat donne :
et vous voyez le problème de xmlns un peu partout ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <?xml version="1.0" encoding="UTF-8"?> <html xmlns:lss="http://www.linguastream.org/LSS/2.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <head> <title>This is my title</title> </head> <body> <p>La</p> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mfenced open="[" close="]"> <mtable columnalign="left"> <mtr xmlns=""> <mtd xmlns=""><mi xmlns="">tag</mi> : det</mtd> </mtr> <mtr xmlns=""> <mtd xmlns=""><mi xmlns="">stag</mi> : def</mtd> </mtr> <mtr xmlns=""> <mtd xmlns=""><mi xmlns="">lemma</mi> : le</mtd> </mtr> </mtable> </mfenced> </math> (...)
ma page XSLT (en partie parce que sinon c trop gros) :
(...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:lss="http://www.linguastream.org/LSS/2.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
(...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <xsl:template match="lss:semantics" priority="2"> <html xmlns:xhtml="http://www.w3.org/1999/xhtml"> <head> <title>This is my title</title> </head> <body> <xsl:apply-templates select="lss:sem/*" /> </body> </html> </xsl:template>
(...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <xsl:template match="lss:value" priority="1"> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mfenced open="[" close="]"> <mtable columnalign="left"> <xsl:apply-templates select="*"/> </mtable> </mfenced> </math> </xsl:template>
Je pense que c'est fragment déjà gros sont représentatif de ce que le fichier fait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <xsl:template match="*[*]" priority="0"> <mtr> <mtd> <mi> <xsl:value-of select="name()"/> </mi> : <mfenced open="[" close="]"> <mtable columnalign="left"> <xsl:apply-templates select="*"/> </mtable> </mfenced> </mtd> </mtr> </xsl:template>
J'espère que l'un d'entre vous pourra me conseiller, je pense que je m'y prends mal ce qui fait que je n'ai pas ce que j'attends.
Merci beaucoup
Partager