Yay. Бухгалтерский учет: |
У меня есть набор учетных записей; они приходят парами - 1 дебет и 1 кредит. Две записи имеют одинаковые значения <SequenceID>
. Я хочу обе записи, если одна из записей ссылается на учетную запись 1111.
Используемый (нерабочий) запрос (который я свободно основал на [ XPath. Выберите узлы на основе других, связанных узел ):
GLPostings/GLTransaction[GLPostings/GLTransaction[AccountCode = '1111']/SequenceID = SequenceID]
, но я получаю "возвращена пустая последовательность".
Если я тестирую часть запроса: GLPostings/GLTransaction[AccountCode = '1111']/SequenceID
Я получаю несколько SequenceID, как и ожидалось. Итак ... как мне превратить эти множественные идентификаторы SequenceID в набор узлов, которые мне нужны?
Вот некоторые тестовые данные:
<?xml version="1.0" encoding="UTF-8"?>
<GLPostings>
<GLTransaction RowNumber="1">
<CRDR>Dr</CRDR>
<SequenceID>616</SequenceID>
<AccountCode>5531</AccountCode>
</GLTransaction>
<GLTransaction RowNumber="2">
<CRDR>Cr</CRDR>
<SequenceID>616</SequenceID>
<AccountCode>2118</AccountCode>
</GLTransaction>
<GLTransaction RowNumber="3">
<CRDR>Dr</CRDR>
<SequenceID>617</SequenceID>
<AccountCode>1111</AccountCode>
</GLTransaction>
<GLTransaction RowNumber="4">
<CRDR>Cr</CRDR>
<SequenceID>617</SequenceID>
<AccountCode>1234</AccountCode>
</GLTransaction>
<GLTransaction RowNumber="5">
<CRDR>Dr</CRDR>
<SequenceID>618</SequenceID>
<AccountCode>1231</AccountCode>
</GLTransaction>
<GLTransaction RowNumber="6">
<CRDR>Cr</CRDR>
<SequenceID>618</SequenceID>
<AccountCode>1231</AccountCode>
</GLTransaction>
<GLTransaction RowNumber="7">
<CRDR>Dr</CRDR>
<SequenceID>619</SequenceID>
<AccountCode>2341</AccountCode>
</GLTransaction>
<GLTransaction RowNumber="8">
<CRDR>Cr</CRDR>
<SequenceID>619</SequenceID>
<AccountCode>1111</AccountCode>
</GLTransaction>
</GLPostings>
Что я хотел бы получить, так это :
<GLTransaction RowNumber="3">
<CRDR>Dr</CRDR>
<SequenceID>617</SequenceID>
<AccountCode>1111</AccountCode>
</GLTransaction>
<GLTransaction RowNumber="4">
<CRDR>Cr</CRDR>
<SequenceID>617</SequenceID>
<AccountCode>1234</AccountCode>
</GLTransaction>
<GLTransaction RowNumber="7">
<CRDR>Dr</CRDR>
<SequenceID>619</SequenceID>
<AccountCode>2341</AccountCode>
</GLTransaction>
<GLTransaction RowNumber="8">
<CRDR>Cr</CRDR>
<SequenceID>619</SequenceID>
<AccountCode>1111</AccountCode>
</GLTransaction>
Любые намеки с благодарностью.
РЕДАКТИРОВАТЬ: Я могу решить эту проблему так:
<xsl:for-each select="/GLPostings/GLTransaction[AccountCode = 1111']/SequenceID">
<xsl:variable name="Seq" select="."/>
<xsl:for-each select="/GLPostings/GLTransaction[SequenceID = $Seq]">
<xsl:call-template name="output-row">
</xsl:call-template>
</xsl:for-each>
</xsl:for-each>
Но это кажется немного ... грязным.