Здравствуйте, я пытаюсь проверить, совпадает ли мой текущий узел с другим узлом. Это мой XML:xslt проверить/сопоставить текущий узел с другим узлом
<top-level>
<ep-bulletin>
<SDOBI>
<B200>
<B210>R1</B210>
</B200>
<B400>
<B472>
<B475>
<date>20030221</date>
<ctry>GB</ctry>
<date>20030222</date>
<ctry>LU</ctry>
</B475>
</B472>
</B400>
<B800>
<B840>
<ctry>DE</ctry>
<ctry>FR</ctry>
<ctry>GB</ctry>
<ctry>IT</ctry>
<ctry>LU</ctry>
<ctry>SE</ctry>
</B840>
</B800>
</SDOBI>
</ep-bulletin>
<ep-bulletin>
<SDOBI>
<B200>
<B210>R2</B210>
</B200>
<B400>
<B472>
<B475>
<date>20040609</date>
<ctry>AT</ctry>
<date>20110630</date>
<ctry>BE</ctry>
<date>20110630</date>
<ctry>CH</ctry>
<date>20120103</date>
<ctry>DE</ctry>
<date>20110630</date>
<ctry>DK</ctry>
<date>20110630</date>
<ctry>FR</ctry>
<date>20110612</date>
<ctry>GB</ctry>
<date>20110612</date>
<ctry>IT</ctry>
<date>20110630</date>
<ctry>LI</ctry>
<date>20120101</date>
<ctry>NL</ctry>
<date>20110613</date>
<ctry>SE</ctry>
</B475>
</B472>
</B400>
<B800>
<B840>
<ctry>AT</ctry>
<ctry>BE</ctry>
<ctry>CH</ctry>
<ctry>DE</ctry>
<ctry>DK</ctry>
<ctry>ES</ctry>
<ctry>FR</ctry>
<ctry>GB</ctry>
<ctry>IT</ctry>
<ctry>LI</ctry>
<ctry>NL</ctry>
<ctry>SE</ctry>
</B840>
</B800>
</SDOBI>
</ep-bulletin>
</top-level>
Я хотел бы быть в состоянии проверить, является ли B800/B840/ctry содержится в B400/B475/ctry. Результатом, который я хотел бы получить, является таблица, содержащая в первом столбце идентификатор записи, во втором столбце мой текущий узел и в третьем узел B475/дата, предшествующая согласованным узлам (| ~ | - это текстовый идентификатор и; разделитель).
|~|R1|~|;|~|DE|~|;|~||~|
|~|R1|~|;|~|FR|~|;|~||~|
|~|R1|~|;|~|GB|~|;|~|20030221|~|
|~|R1|~|;|~|IT|~|;|~||~|
|~|R1|~|;|~|LU|~|;|~|20030222|~|
|~|R1|~|;|~|SE|~|;|~||~|
|~|R2|~|;|~|AT|~|;|~|20040609|~|
|~|R2|~|;|~|BE|~|;|~|20110630|~|
|~|R2|~|;|~|CH|~|;|~|20110630|~|
|~|R2|~|;|~|DE|~|;|~|20120103|~|
|~|R2|~|;|~|DK|~|;|~|20110630|~|
|~|R2|~|;|~|ES|~|;|~||~|
|~|R2|~|;|~|FR|~|;|~|20110630|~|
|~|R2|~|;|~|GB|~|;|~|20110612|~|
|~|R2|~|;|~|IT|~|;|~|20110612|~|
|~|R2|~|;|~|LI|~|;|~|20110630|~|
|~|R2|~|;|~|NL|~|;|~|20120101|~|
|~|R2|~|;|~|SE|~|;|~|20110613|~|
Это код xslt, который я написал, но я не могу получить последний столбец.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/>
<xsl:template match="/">
<xsl:text> </xsl:text>
<xsl:for-each select="top-level/ep-bulletin/SDOBI/B800/B840/ctry">
<xsl:text>|~|</xsl:text>
<xsl:value-of select="../../../B200/B210"/>
<xsl:text>|~|;|~|</xsl:text>
<xsl:value-of select="."/>
<xsl:text>|~|;|~|</xsl:text>
<xsl:choose>
<xsl:when test=".=child::B475">
<xsl:value-of select="../../../preceding::B475/ctry"/>
</xsl:when>
<xsl:otherwise >
<xsl:value-of select="">
</xsl:otherwise>
</xsl:choose>
<xsl:text>|~|</xsl:text>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Заранее благодарю вас за помощь.
Большое спасибо Яну! Он отлично работает! – user2406147