Pracuję nad rozwojem XSL i potrzebuję znać odpowiednik NOT IN w XPATH. Prezentuję XML i XSL w najprostszym formacie, który byłby zrozumiały dla wszystkich.Nie jest równoważny w wyrażeniu XPath
<?xml-stylesheet type="text/xsl" href="XSL.xsl"?>
<Message>
<Customers>
<Customer pin="06067">1</Customer>
<Customer pin="06068">2</Customer>
<Customer pin="06069">3</Customer>
<Customer pin="06070">4</Customer>
<Customer pin="06072">5</Customer>
</Customers>
<Addresses>
<Address pin1="06067">A</Address>
<Address pin1="06068">B</Address>
<Address pin1="06069">C</Address>
</Addresses>
</Message>
XSL
<xsl:template match="/Message">
<html>
<body>
<h4>Existing Customers</h4>
<table>
<xsl:apply-templates select="//Customers/Customer[@pin = //Addresses/Address/@pin1]"></xsl:apply-templates>
</table>
<h4>New Customers</h4>
<table>
<!--This place need to be filled with new customers-->
</table>
</body>
</html>
</xsl:template>
<xsl:template match="Customer" name="Customer">
<xsl:variable name="pin" select="./@pin"></xsl:variable>
<tr>
<td>
<xsl:value-of select="."/>
<xsl:text> is in </xsl:text>
<xsl:value-of select="//Addresses/Address[@pin1=$pin]"/>
</td>
</tr>
</xsl:template>
W powyższym XSLT, pod komentarzem okolicy, muszę dopasować i wyświetlić klientów, którzy Adres nie jest istniejący w Adresy/węzeł adresu.
Proszę pomóc znaleźć wyrażenie XPath, które będzie pasować do klientów, którzy NIE są w zestawie węzłów adresów. (Każda alternatywny może również pomóc)
Dobre pytanie (+1). Zobacz moją odpowiedź na wydajne, krótkie i proste rozwiązanie XSLT. :) –