Bonjour,
J'ai un soucis de manipulation XSLT.
L'idée du traitement est de transformer une requête Xml en entrée en un Objet via une déserialisation le tout en y appliquant une transformation via un fichier xsl.
Voici un exemple de requête en entrée:
Mon objet est quand à lui composé par exemple des deux attributs suivants
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <?xml version="1.0" encoding="UTF-8"?> <ast:GetCoverage ....> <ast:CoverageParameters> <ast:MinimumCoverageRate uom="purcentageaa">test</ast:MinimumCoverageRate>
Voici l'allure de mon xsl
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
24
25
26
27
28
29
30 [Serializable] [DataContract] [XmlRootAttribute(ElementName="Request")] public class RequestInfo { #region Attribute private RequestMethodEnum method; [XmlAttribute("method")] public RequestMethodEnum Method { get { return method; } set { method = value; } } private string testGetValue; [XmlAttribute("testGetValue")] public string TestGetValue { get { return testGetValue; } set { testGetValue = value; } } #endregion }
Je précise que je me base sur un existant qui fonctionne tres bien. Le problème ne vient pas de ma deserialisation car si je rentre directement une valeur au lieu d'utiliser un select ça fonctionne.
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
24
25
26
27
28
29
30
31
32
33 <xsl:template match="/*"> <xsl:choose> <!-- define here all accepted methods, with their namespace. Subsequently, define associated template --> <xsl:when test="name() = 'wfs:GetFeature'"> <xsl:call-template name="GetFeature"/> </xsl:when> <xsl:when test="local-name() = 'GetStereoscopicRatio'"> <xsl:call-template name="GetStereoscopicRatio"/> </xsl:when> <xsl:when test="name() = 'ast:GetCoverage'"> <xsl:call-template name="GetCoverage"/> </xsl:when> <xsl:otherwise> <xsl:message terminate="yes"> $ERROR$UnknownMethod$Unknown method : '<xsl:value-of select="name()"/>' </xsl:message> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="GetCoverage"> <Request> <xsl:attribute name="method"> <!-- method element is mandatory --> <xsl:value-of select="local-name()"/> </xsl:attribute> <xsl:attribute name="testGetValue"> <xsl:value-of select="ast:CoverageParameters/ast:MinimumCoverageRate/text()"/> </xsl:attribute> </Request> </xsl:template>
En faitsemble retourner un champ vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <xsl:value-of select="ast:CoverageParameters/ast:MinimumCoverageRate/text()"/>
Hors dans le traitement d'un autre Template (GetFeature()) on procède de la sorte.
J'ai également essayé plusieurs syntaxe comme:
/ast:CoverageParameters/ast:MinimumCoverageRate/text()
ast:GetCoverage/ast:CoverageParameters/ast:MinimumCoverageRate/text()
/ast:GetCoverage/ast:CoverageParameters/ast:MinimumCoverageRate/text()
Quelqu'un aurait-il une idée ou pourrait m'aiguiller? j'ai beau lire des tutos ou de'étudier l'existant je ne vois ce que je fais de difféérent ou mal...
Cordialement,
Christophe
Partager