Выбор первого узла xml с помощью xslt - PullRequest
0 голосов
/ 08 июня 2011

У меня следующий xml,

<?xml version="1.0" encoding="utf-8"?>
<NewDataSet xmlns="www.asdsad.com/sdsad">
  <Balances>
    <AccountNumber>KK-888</AccountNumber>
    <SubAccountNumber>KK-888-1</SubAccountNumber>
    <TAcctID>1</TAcctID>
    <TransactionAccount>ARC Deposit</TransactionAccount>
    <Description />
    <Balance>0.0000</Balance>
  </Balances>
  <Balances>
    <AccountNumber>KK-888</AccountNumber>
    <SubAccountNumber>KK-888-2</SubAccountNumber>
    <TAcctID>2</TAcctID>
    <TransactionAccount>Assessments and Dues</TransactionAccount>
    <Description>This is the primary account for all associations dues and assessments. </Description>
    <Balance>170</Balance>
  </Balances>
  <Balances>
    <AccountNumber>KK-888</AccountNumber>
    <SubAccountNumber>KK-888-4</SubAccountNumber>
    <TAcctID>4</TAcctID>
    <TransactionAccount>Fines/Compliance</TransactionAccount>
    <Description />
    <Balance>0.0000</Balance>
  </Balances>
</NewDataSet>

Мне нужен этот результат xml сверху через xslt,

<balance amount="170" />

Я передам SubAccountNumber в xslt, и мне нужна определенная сумма Balance / Balance. В приведенном выше примере я передал значение SubAccountNumber как «KC1-0221-2», чтобы второй узел Balances соответствовал, и его значение Balance было равно «170». Может кто-нибудь помочь мне написать xslt для этого. (Примечание: только один узел будет соответствовать переданному SubAccountNumber).

ОБНОВЛЕНО У меня нет проблем, если я могу создать XML с корневым узлом,

<account>
     <balance amount="170" />
</account>

1 Ответ

1 голос
/ 08 июня 2011

Начальная точка ...

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:asd="www.asdsad.com/sdsad"
    exclude-result-prefixes="asd">

    <xsl:output omit-xml-declaration="yes"/>
    <xsl:param name="SAN" select="'KC1-0221-2'"/>

    <xsl:template match="/asd:NewDataSet">
        <balance amount="{asd:Balances[asd:SubAccountNumber=$SAN]/asd:Balance}"/>
    </xsl:template>

</xsl:stylesheet>

Обратите внимание, что это приведет к

<balance amount="" />

В случае $SAN отсутствует во входном документе. Иначе как бы вы хотели вернуться в случае несоответствия вообще?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...