IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

xmlns:op (xquery operators) - fonction "subtract-yearMonthDurations()" non reconnue


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre actif
    Avatar de VforVincent
    Homme Profil pro
    Doctorant (EPUB 3.0)
    Inscrit en
    Avril 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Doctorant (EPUB 3.0)
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 115
    Points : 265
    Points
    265
    Par défaut xmlns:op (xquery operators) - fonction "subtract-yearMonthDurations()" non reconnue
    Bonjour,

    J'ai un petit problème que je n'arrive pas à résoudre. Habituellement, j'arrive toujours à retomber sur mes pattes en allant dénicher ici ou là dans les recoins de la Toile un petit sujet dans un forum, un tutoriel, etc.

    Mais pas cette fois. Et donc me voici à mon tour auteur d'un sujet de discussion. En espérant ne pas avoir contracté la sms-tchatoïte...

    J'essaie de travailler sur des dates et des durées. Un des objectifs est de comparer la date contenue dans <PublicationDateTest> et la date du jour. Si la différence est supérieure à 30 jours, alors la date dans <PublicationDateTest> "perdra" un mois.

    J'ai fait mon p'tit bricolage, mes tests pour progresser petit à petit. Et j'en suis au fameux problème insoluble, la fonction que j'utilise ne semble pas être reconnue (selon le namespace que j'ai indiqué). En consultant la page du W3C, la fonction apparaît pourtant.

    Je vous soumet donc ce problème avec les fichiers tests que j'ai produit :

    test.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0" encoding="UTF-8"?>
    <FichierTest>
        <TitreTest>Un Titre</TitreTest>
        <PublicationDateTest>2010-09-24</PublicationDateTest>
        <PublicationDateTest>2011-06-24</PublicationDateTest>
    </FichierTest>
    et test.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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vmf="http://www.altova.com/MapForce/UDF/vmf" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:op="http://www.w3.org/TR/2002/WD-xquery-operators-20021115" xmlns:err="http://www.w3.org/2005/xqt-errors" exclude-result-prefixes="err fn vmf xs xsi xsl">
     
        <xsl:output encoding="UTF-8" method="xml" indent="yes"/>    
        <xsl:strip-space elements="*"/>
     
        <xsl:template match="/">
            <Root>
                 <xsl:apply-templates select="//TitreTest"/>
                 <xsl:apply-templates select="//PublicationDateTest"/>
            </Root>
        </xsl:template>
     
        <xsl:template match="TitreTest">
            <Title>
                <xsl:apply-templates/>
            </Title>
        </xsl:template>
     
        <xsl:template match="PublicationDateTest">
            <xsl:variable name="PubDate">
                <xsl:value-of select="concat(substring(.,1,4), '-',
                    substring(.,6,2), '-',
                    substring(.,9,2))"/>
            </xsl:variable>
     
            <xsl:variable name="PubliDate" as="xs:date" select="xs:date($PubDate)"/>
            <xsl:variable name="NewRel">
                <xsl:choose>
                <xsl:when test="fn:days-from-duration(xs:duration(fn:current-date() - $PubliDate)) > 215">
                    <xsl:message>Ce n'est pas une new release, la durée dépasse 7 mois.</xsl:message>
                    <xsl:text>other</xsl:text>
                </xsl:when>
                <xsl:otherwise>new-release</xsl:otherwise>
                </xsl:choose>
            </xsl:variable>
            <xsl:variable name="PreOrderDate" as="xs:date" select="op:subtract-yearMonthDuration-from-date($PubliDate, xs:yearMonthDuration('P1M'))"/>
             <xsl:variable name="PreOrder">
                <xsl:choose>
                    <xsl:when test="fn:days-from-duration(xs:duration($PubliDate - fn:current-date())) > 30">
                        <xsl:message>PreOrder invalide</xsl:message>
                        <HAHA><xsl:value-of select="$PreOrderDate"/></HAHA>
                    </xsl:when>
                    <xsl:otherwise>Automatic</xsl:otherwise>
                </xsl:choose>
            </xsl:variable>
            <DateTest>
                <RecupDate><xsl:value-of select="$PubDate"/></RecupDate>
            <NewDate><xsl:value-of select="$PubliDate"/></NewDate>
            <NewRel><xsl:value-of select="$NewRel"></xsl:value-of></NewRel>
            <PreOrder><xsl:value-of select="$PreOrder"/></PreOrder>
            </DateTest>
            <xsl:text>--- END ---
    </xsl:text>
        </xsl:template>
     
    </xsl:stylesheet>

  2. #2
    Membre actif
    Avatar de VforVincent
    Homme Profil pro
    Doctorant (EPUB 3.0)
    Inscrit en
    Avril 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Doctorant (EPUB 3.0)
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 115
    Points : 265
    Points
    265
    Par défaut
    Je relance le sujet une première et dernière fois (pour ne pas vous embêter non plus).

    Si quelqu'un trouve une solution alternative, ça me va aussi !

Discussions similaires

  1. Critère non reconnu dans la fonction DCount
    Par Ps4 dans le forum Access
    Réponses: 7
    Dernier message: 20/06/2005, 09h02
  2. Réponses: 10
    Dernier message: 03/03/2005, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo