Template tenant compte des précédents ? Ou comment supprimer un noeud.
Bonjour,
Voilà mon problème, j'ai mon fichier en entrée qui possède des noeuds <location> et <anticipatedStance>. Je sais les supprimer. Cependant, j'ai besoin de faire des opérations dessus, j'ai donc un autre template qui opère sur un Path similaire, et l'écrase. Ainsi, on ne tient plus compte des templates précédents, et je me retrouve en sorti avec tjr <location> et anticipatedStance> existant.
J'ai bien réussi à en faire disparaitre un avec un <xsl:apply-templates select="* except anticipatedStance"/>, mais je ne parviens pas à faire de même pour location (en même temps). J'ai aussi essayé d'enchainer 2 apply-templates, mais Saxon n'apprécie pas.
Mon code XML :
Code:
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
<?xml version="1.0" encoding="UTF-8"?>
<ns14:NC1_OPORD xmlns:ns14="urn:fra:nc1:message:opord"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns3="http://www.w3.org/2001/XMLSchema"
xmlns:ns47="urn:fra:nc1:objet:unit"
classification="0"
situation="OPO 01"
id="0"
lastChangeDatetime="2019-06-27T12:56:55.309Z"
majorVersion="8"
mediumVersion="1"
minorVersion="1"
urgencyLevel="0">
<_3_execution>
<A_intention>
<maneuverStep1>
<mixedText>ATTAQUE + RAID Du 250600 Z JUN au 251500Z JUN Appuyé massivement par l'artillerie, après avoir débouché sur ordre de LD, attaquer sur l'ensemble du fuseau, au minimum fixer au mieux débuter la destruction des BM ECH1. Lancer simultanément un raid blindé pour fixer au plus vite le 314 (RU) BC. </mixedText>
<objects>
<object xsi:type="ns47:UnitType"
activationChangeDatetime="2019-06-27T06:50:35Z"
activationStatus="1"
id="0:6041:6"
isFull="1"
lastChangeDatetime="2019-06-27T06:50:35Z"
majorVersion="8"
mediumVersion="1"
minorVersion="1">
<tacticalData>
<name>311 (RU) BNMECA</name>
<symbolCode>APP6B:SHGPUCIZ---FXR-</symbolCode>
</tacticalData>
<location>
<point>
<x>4.763808173392329</x>
<y>49.359748456781055</y>
</point>
<datetime>2019-06-20T08:02:16Z</datetime>
<validityPeriod>
<startDatetime>2019-06-20T08:02:16Z</startDatetime>
<duration>P2Y</duration>
</validityPeriod>
</location>
<anticipatedStance>
<validityPeriod>
<startDatetime>2007-06-20T08:02:16Z</startDatetime>
<endDatetime>2007-06-27T10:03:15Z</endDatetime>
</validityPeriod>
<locationStance>
<point>
<x>4.81506729114335</x>
<y>49.380025920244194</y>
</point>
</locationStance>
</anticipatedStance>
<anticipatedStance>
<validityPeriod>
<tacticalTime>1</tacticalTime>
</validityPeriod>
<locationStance>
<point>
<x>4.81606729114335</x>
<y>49.381025920244194</y>
</point>
</locationStance>
</anticipatedStance>
<anticipatedStance>
<validityPeriod>
<tacticalTime>2</tacticalTime>
</validityPeriod>
<locationStance>
<point>
<x>4.85506729114335</x>
<y>49.380025920244194</y>
</point>
</locationStance>
</anticipatedStance>
</object>
</objects>
</maneuverStep1>
</A_intention>
</_3_execution>
</ns14:NC1_OPORD> |
Mon code XSL :
Code:
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
|
<?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"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:nc1opord="urn:fra:nc1:message:opord"
exclude-result-prefixes="xs fn"
version="2.0">
<xsl:output
method="xml"
encoding="UTF-8"
indent="yes"
omit-xml-declaration="no"
/>
<xsl:strip-space elements="*" />
<!-- On cherche les documents XML entiers -->
<xsl:template match="/">
<!-- On cherche tous les documents XML dans le même répértoire -->
<xsl:for-each select="collection('./?select=*.xml')" >
<!-- On recopie les fichiers XML de sorties dans le dossier 'resultat' avec les mêmes noms que les fichiers de départ -->
<xsl:result-document method="xml" href="resultat/{tokenize(document-uri(.), '/')[last()]}">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:result-document>
</xsl:for-each>
</xsl:template>
<xsl:template match="nc1opord:NC1_OPORD//@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="nc1opord:NC1_OPORD//anticipatedStance"/>
<xsl:template match="nc1opord:NC1_OPORD//_3_execution/A_intention//object[@xsi:type[contains(., 'UnitType')]]/location"/>
<xsl:template match="nc1opord:NC1_OPORD//_3_execution/A_intention">
<xsl:copy>
<xsl:variable name="locationManeuver">
<xsl:apply-templates select="*"/>
</xsl:variable>
<xsl:copy-of select="$locationManeuver"></xsl:copy-of>
</xsl:copy>
</xsl:template>
</xsl:stylesheet> |
Je vous remercie d'avance !