#xml #xslt
#xml #xslt
Вопрос:
У меня есть следующий 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" />
Я передам номер субсчета в xslt, и мне нужны конкретные остатки / сумма баланса. В приведенном выше примере я передал значение SubAccountNumber как «KC1-0221-2», поэтому второй узел баланса сопоставлен, и его значение баланса равно «170». Кто-нибудь может помочь мне написать xslt для этого. (Примечание: только один узел будет соответствовать переданному номеру подсчета).
ОБНОВЛЕНО У меня нет проблем, если я могу создать xml с корневым узлом,
<account>
<balance amount="170" />
</account>
Комментарии:
1. Как вы будете передавать входные данные? используя параметры?
Ответ №1:
Отправная точка…
<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
отсутствует во входном документе. В противном случае, как бы вы хотели вернуться в случае, если совпадение вообще отсутствует?
Комментарии:
1. В вопросе также упоминалось о желании «первого узла», этот ответ не затрагивает эту часть требования.
2. @Michael-Kay: Как обычно бывает, я думаю, что вопрос в названии на самом деле не соответствует запросу OP. Однако это всего лишь вопрос выбора «первого узла», и мы можем легко настроить ответ.