Show
Ignore:
Timestamp:
05/10/07 23:30:30 (3 years ago)
Author:
anp
Message:

Contournement bug moteur xpath qui génère une exception quand "id" possède un saut de ligne dans <xsl:for-each select=//xxxx[normalize-space(id)=$vId]>...

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/Wsp_Modeling/spaces/gen/modelBuilder/bs.doss/sm_odTemplateText/pp.content.xsl.xsl

    r8888 r9232  
    3535                #          - dataBlock 
    3636                #             <scOd:dataBlock category="xxxx"> 
    37                 #                                       <scOd:id></scOd:id> 
     37                #                                       <scOd:id value=""/> 
    3838                #                                       <scOd:sortKey></scOd:sortKey> 
    3939                #                                       <scOd:title></scOd:title> 
     
    212212                 
    213213                <xsl:template match="scOd:dataBlock" mode="getDataBlockList"> 
    214                         <xsl:variable name="vId" select="normalize-space(scOd:id)"/> 
     214                        <xsl:variable name="vId" select="scOd:id/@value"/> 
    215215                        <xsl:variable name="vCategory" select="@category"/> 
    216216                        <xsl:variable name="vIsContentShowInDocument"><!-- Permet de dire si la partie "contenu" de ce block a été affichée qq part dans le document --> 
     
    221221                                </xsl:choose> 
    222222                        </xsl:variable> 
    223                         <dataBlock refId="{{generate-id()}}" category="{{@category}}" blockId="{{normalize-space(scOd:id)}}" isContentShowInDocument="{{normalize-space($vIsContentShowInDocument)}}"/> 
     223                        <dataBlock refId="{{generate-id()}}" category="{{@category}}" blockId="{{scOd:id/@value}}" isContentShowInDocument="{{normalize-space($vIsContentShowInDocument)}}"/> 
    224224                </xsl:template> 
    225225                 
     
    227227                        <xsl:param name="pIdForEach"/> 
    228228                        <xsl:param name="pMode"/><!-- [|ignoreAlreadyShowBlocks] --> 
    229                         <xsl:variable name="vId" select="normalize-space(scOd:id)"/> 
     229                        <xsl:variable name="vId" select="scOd:id/@value"/> 
    230230                        <xsl:variable name="vCategory" select="@category"/> 
    231231                        <xsl:variable name="vIdBlockList"> 
    232232                                <xsl:choose> 
    233233                                        <xsl:when test="key('dataBlockDeclaration', @category)/@hideSameBlock='yes'"><!-- pas de doublon--> 
    234                                                 <xsl:for-each select="//scOd:dataBlock[@category=$vCategory and normalize-space(scOd:id)=$vId]"><xsl:value-of select="generate-id()"/>###</xsl:for-each> 
     234                                                <xsl:for-each select="//scOd:dataBlock[@category=$vCategory and scOd:id/@value=$vId]"><xsl:value-of select="generate-id()"/>###</xsl:for-each> 
    235235                                        </xsl:when> 
    236236                                        <xsl:otherwise><!-- on affiche toutes les entrées --> 
     
    244244                                <xsl:choose> 
    245245                                        <xsl:when test="key('dataBlockDeclaration', @category)/scOd:content//scOd:block.data or key('dataBlockDeclaration', @category)/scOd:conditionalContent//scOd:block.data">true</xsl:when> 
    246                                         <xsl:when test="count(//scOd:dataBlock[normalize-space(scOd:id)=$vId and @category=$vCategory and scOd:overrideContentDeclaration//scOd:block.data])&gt;0">true</xsl:when> 
     246                                        <xsl:when test="count(//scOd:dataBlock[scOd:id/@value=$vId and @category=$vCategory and scOd:overrideContentDeclaration//scOd:block.data])&gt;0">true</xsl:when> 
    247247                                        <xsl:otherwise>false</xsl:otherwise> 
    248248                                </xsl:choose> 
     
    250250                        <xsl:if test="$pMode!='ignoreAlreadyShowBlocks' or key('dataBlockDeclaration', @category)/@hideBlockIfShowInContent='no' or (key('dataBlockDeclaration', @category)/@hideBlockIfShowInContent='yes' and normalize-space($vIsContentShowInDocument)='false')"> 
    251251                                <xsl:if test="  not(key('dataBlockDeclaration', @category)/@hideEmptyBlocks='yes'  
    252                                                                 and not($vHasData)) and not(key('dataBlockDeclaration', @category)/@hideSameBlock='yes' and string-length(normalize-space(scOd:id))!=0 and preceding::scOd:dataBlock[@category=$vCategory and normalize-space(scOd:id)=$vId] and preceding::scOd:dataBlock[@category=$vCategory and normalize-space(scOd:id)=$vId]/scOd:data=$vData)"><!-- si block vide OU déja pris en compte => on ne prend pas le block--> 
    253                                         <block idList="{{normalize-space($vIdBlockList)}}" category="{{@category}}" sortKey="{{normalize-space(scOd:sortKey)}}" idBlock="{{normalize-space(scOd:id)}}" isContentShowInDocument="{{normalize-space($vIsContentShowInDocument)}}"> 
     252                                                                and not($vHasData)) and not(key('dataBlockDeclaration', @category)/@hideSameBlock='yes' and string-length(scOd:id/@value)!=0 and preceding::scOd:dataBlock[@category=$vCategory and scOd:id/@value=$vId] and preceding::scOd:dataBlock[@category=$vCategory and scOd:id/@value=$vId]/scOd:data=$vData)"><!-- si block vide OU déja pris en compte => on ne prend pas le block--> 
     253                                        <block idList="{{normalize-space($vIdBlockList)}}" category="{{@category}}" sortKey="{{normalize-space(scOd:sortKey)}}" idBlock="{{scOd:id/@value}}" isContentShowInDocument="{{normalize-space($vIsContentShowInDocument)}}"> 
    254254                                                <title><xsl:copy-of select="scOd:title/* | scOd:title/text()"/></title> 
    255255                                                <data><xsl:copy-of select="$vData"/></data> 
     
    265265                <xsl:template match="scOd:dataBlock"> 
    266266                        <xsl:variable name="vId" select="generate-id()"/> 
    267                         <xsl:variable name="vBlockId" select="normalize-space(scOd:id)"/> 
     267                        <xsl:variable name="vBlockId" select="scOd:id/@value"/> 
    268268                        <xsl:variable name="vBlockCategory" select="@category"/> 
    269269                        <xsl:variable name="vBlockList"> 
     
    282282                                <xsl:when test="xalan:nodeset($vBlockList)//block[contains(@idList, $vId)]/declaration/scOd:conditionalContent"> 
    283283                                        <xsl:choose> 
    284                                                 <xsl:when test="count(preceding-sibling::scOd:dataBlock[normalize-space(scOd:id)=$vBlockId and @category=$vBlockCategory])=0"><!-- première déclaration --> 
     284                                                <xsl:when test="count(preceding-sibling::scOd:dataBlock[scOd:id/@value=$vBlockId and @category=$vBlockCategory])=0"><!-- première déclaration --> 
    285285                                                        <xsl:apply-templates select="xalan:nodeset($vBlockList)//block[contains(@idList, $vId)][1]/declaration/scOd:conditionalContent/scOd:firstCall/* | xalan:nodeset($vBlockList)//block[contains(@idList, $vId)][1]/declaration/scOd:conditionalContent/scOd:firstCall/text()"/> 
    286286                                                </xsl:when>