My XML.comment traiter les plages de numéros dans xslt2.0
<a>
<range nr="1" no-range="1 2 3 4" oc="4"/>
<range nr="2" no-range="41 42 43 44" oc="4"/>
<range nr="3" no-range="43 44 45 46" oc="4"/>
<range nr="4" no-range="50 51 52 53" oc="4"/>
<range nr="5" no-range="53 54" oc="2"/>
<range nr="6" no-range="60 61" oc="2"/>
</a>
je tentais cela, mais ne savez pas comment comparer deux tableaux et imprimer la différence:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:template match="a">
<xsl:variable name="bRannge">
<xsl:for-each select="range">
<xsl:variable name="aRange" select="tokenize(concat(@no-range, ' '), ' ')"/>
<xsl:value-of select="$aRange"/>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="cRange" select="tokenize(normalize-space($bRannge), ' ')"/>
<xsl:variable name="aSeq">
<xsl:for-each select="1 to xs:integer(number($cRange[last()]))">
<xsl:value-of select="position()"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="bSeq" select="tokenize(normalize-space($aSeq), ' ')"/>
[<xsl:value-of select="$cRange"/>]
[<xsl:value-of select="$bSeq"/>]
<!-- How to compare two arrays -->
</xsl:template>
Comment puis-je obtenir le rapport suivant à l'aide xslt 2.0:
- Plages de numéros non utilisées 5-40, 47-49, 55-59
- 'nr 3' un chevauchement avec 'nr 2' Numéro de chevauchement = 43, 44
- 'NR 5' chevauche avec 'nr 4' Numéro de chevauchement = 53
Honnêtement, je en doute la santé mentale d'utiliser XSLT pour cela. L'écriture d'une fonction d'extension permet-elle de passer l'élément 'a' à une option viable? – Flynn1179
XSLT 2.0 est bien pour ça. Qu'avez-vous essayé? –
@ C.M.Sperberg-McQueen S'il vous plaît voir question éditée avec mon xslt. J'ai deux tableaux, mais je ne sais pas comment imprimer la différence. –