Reputation: 171
Given this XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pm [
]>
<pm>
<content>
<pmEntry>
<dmRef>
<dmRefIdent>
<dmCode modelIdentCode="S1000DBIKE"
systemDiffCode="AAA"
systemCode="D00"
subSystemCode="0"
subSubSystemCode="0"
assyCode="00"
disassyCode="00"
disassyCodeVariant="AA"
infoCode="001"
infoCodeVariant="A"
itemLocationCode="A"/>
<issueInfo issueNumber="001" inWork="00"/>
<language countryIsoCode="US" languageIsoCode="en"/>
</dmRefIdent>
<dmRefAddressItems>
<dmTitle>
<infoName>Title page</infoName>
</dmTitle>
<issueDate day="31" month="12" year="2012"/>
</dmRefAddressItems>
</dmRef>
</pmEntry>
<pmEntry>
<dmRef>
<dmRefIdent>
<dmCode assyCode="00" disassyCode="00" disassyCodeVariant="E01" infoCode="130"
infoCodeVariant="D" itemLocationCode="A" modelIdentCode="555"
subSubSystemCode="0" subSystemCode="3" systemCode="15" systemDiffCode="A"/>
</dmRefIdent>
<dmRefAddressItems>
<dmTitle>
<infoName>Pre-Flight</infoName>
</dmTitle>
</dmRefAddressItems>
</dmRef>
<dmRef>
<dmRefIdent>
<dmCode assyCode="00" disassyCode="00" disassyCodeVariant="E02" infoCode="130"
infoCodeVariant="D" itemLocationCode="A" modelIdentCode="525"
subSubSystemCode="0" subSystemCode="3" systemCode="15" systemDiffCode="A"/>
</dmRefIdent>
<dmRefAddressItems>
<dmTitle>
<infoName>Post-Flight</infoName>
</dmTitle>
</dmRefAddressItems>
</dmRef>
<dmRef>
<dmRefIdent>
<dmCode modelIdentCode="FLRA" systemDiffCode="A" systemCode="00" subSystemCode="0" subSubSystemCode="0"
assyCode="00" disassyCode="00" disassyCodeVariant="E01" infoCode="131" infoCodeVariant="T" itemLocationCode="A"/>
</dmRefIdent>
<dmRefAddressItems>
<dmTitle>
<infoName>Through-Flight Checklist</infoName>
</dmTitle>
</dmRefAddressItems>
</dmRef>
</pmEntry>
<pmEntry>
<dmRef>
<dmRefIdent>
<dmCode assyCode="00" disassyCode="11" disassyCodeVariant="A01" infoCode="141"
infoCodeVariant="A" itemLocationCode="A" modelIdentCode="555"
subSubSystemCode="0" subSystemCode="3" systemCode="15" systemDiffCode="A"/>
</dmRefIdent>
<dmRefAddressItems>
<dmTitle>
<infoName>First Advisory</infoName>
</dmTitle>
</dmRefAddressItems>
</dmRef>
<dmRef>
<dmRefIdent>
<dmCode assyCode="00" disassyCode="15" disassyCodeVariant="A03" infoCode="141"
infoCodeVariant="A" itemLocationCode="A" modelIdentCode="555"
subSubSystemCode="9" subSystemCode="4" systemCode="15" systemDiffCode="A"/>
</dmRefIdent>
<dmRefAddressItems>
<dmTitle>
<infoName>Status Messages</infoName>
</dmTitle>
</dmRefAddressItems>
</dmRef>
<dmRef>
<dmRefIdent>
<dmCode assyCode="00" disassyCode="20" disassyCodeVariant="A99" infoCode="141"
infoCodeVariant="A" itemLocationCode="A" modelIdentCode="555"
subSubSystemCode="0" subSystemCode="3" systemCode="15" systemDiffCode="A"/>
</dmRefIdent>
<dmRefAddressItems>
<dmTitle>
<infoName>Last Advisory</infoName>
</dmTitle>
</dmRefAddressItems>
</dmRef>
</pmEntry>
<pmEntry>
<dmRef>
<dmRefIdent>
<dmCode assyCode="00" disassyCode="01" disassyCodeVariant="C99" infoCode="141" infoCodeVariant="A"
itemLocationCode="A" modelIdentCode="555" subSubSystemCode="0" subSystemCode="4"
systemCode="15" systemDiffCode="A"/>
</dmRefIdent>
<dmRefAddressItems>
<dmTitle>
<infoName>Cautions</infoName>
</dmTitle>
</dmRefAddressItems>
</dmRef>
<dmRef>
<dmRefIdent>
<dmCode assyCode="00" disassyCode="10" disassyCodeVariant="C99" infoCode="141"
infoCodeVariant="A" itemLocationCode="A" modelIdentCode="555" subSubSystemCode="0"
subSystemCode="4" systemCode="15" systemDiffCode="A"/>
</dmRefIdent>
<dmRefAddressItems>
<dmTitle>
<infoName>Cautions End</infoName>
</dmTitle>
</dmRefAddressItems>
</dmRef>
</pmEntry>
</content>
</pm>
And these two variables:
<xsl:variable name="all-DMs" as="item()*" select="descendant::content/pmEntry//dmRef/dmRefIdent/dmCode"/>
<xsl:variable name="flight-DMs" as="item()*" select="descendant::content/pmEntry//dmRef/dmRefIdent/dmCode[@infoCode=('130','131')]"/>
$flight-DMs
looks like this, $all-DMs
contains all the dmCode
s:
<dmCode assyCode="00" disassyCode="00" disassyCodeVariant="E01" infoCode="130"
infoCodeVariant="D" itemLocationCode="A" modelIdentCode="555"
subSubSystemCode="0" subSystemCode="3" systemCode="15" systemDiffCode="A"/>
<dmCode assyCode="00" disassyCode="00" disassyCodeVariant="E02" infoCode="130"
infoCodeVariant="D" itemLocationCode="A" modelIdentCode="525"
subSubSystemCode="0" subSystemCode="3" systemCode="15" systemDiffCode="A"/>
<dmCode modelIdentCode="FLRA" systemDiffCode="A" systemCode="00" subSystemCode="0" subSubSystemCode="0" assyCode="00" disassyCode="00" disassyCodeVariant="E01" infoCode="131" infoCodeVariant="T" itemLocationCode="A"/>
I would like to process $flight-DMs
first and then the rest of the DMs with $all-DMs
but excluding any dmCode
that was already processed in $flight-DMs
. I thought the best way was to create a third variable, $filtered-DMs
that contained $allDMs
- $flight-DMs
, (actually I would prefer one variable that contained $flight-DMS
and $filtered-DMs
so I only have to loop once) but my attempts have failed:
<xsl:variable name="filtered-DMs" as="item()*" select="$all-DMs[not(.=$flight-DMs)]"/>
<xsl:variable name="filtered-DMs" select="every $x in $all-DMs satisfies not($x=$flight-DMs)"/>
If I try to use contains()
or matches()
I get an error that the second parameter can't contain more than one sequence:
<xsl:for-each select="every $x in $all-DMs satisfies not(contains($flight-DMs,$x))">
EDIT: I think what I want is:
<xsl:variable name="filtered-DMs" as="item()*" select="$flight-DMs union $all-DMs"/>
Upvotes: 0
Views: 33
Reputation: 167716
I think you want e.g. every $item1 in $sequence1 satisfies not(some $item2 in $sequence2 satisfies contains($item1, $item2))
Upvotes: 0
Reputation: 4870
Given these variables
<xsl:variable name="flightCodes" as="xs:string*" select="('130','131')"/>
<xsl:variable name="all-DMs" as="element()*" select="descendant::content/pmEntry//dmRef/dmRefIdent/dmCode"/>
<xsl:variable name="flight-DMs" as="element()*" select="$all-DMs[@infoCode=$flightCodes]"/>
you have 2 options for flight-DMs
<xsl:variable name="non-flight-DMs" as="element()*" select="$all-DMs[not(@infoCode=$flightCodes)]"/>
<xsl:variable name="non-flight-DMs" as="element()*" select="$all-DMs except $flight-DMs"/>
Upvotes: 0