将XML转换为子集 [英] Transforming XML to subset
本文介绍了将XML转换为子集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
嗨专家,
我有一个xml,我需要在传递的输入上创建另一个基础,在这种情况下是索赔号。这个输出不只是XML的一部分,但树结构需要保持整体基础值。
以下是主要的xml:
Hi Experts,
I have an xml out of which i need to create another one base on input passed, which in this case is claim number. This output is not just a part of XML but the tree structure needs to be maintained as a whole base leaves value.
Following is the main xml :
<claimdata>
<payer payerid="p1">
<plan planno="pl1">
<subscriber subscriberid="s1">
<patient patientid="pt1">
<claim claimno="CL1" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
<claim claimno="CL2" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
<claim claimno="CL3" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
</patient>
<patient patientid="pt2">
<claim claimno="CL4" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
<claim claimno="CL5" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
</patient>
<patient patientid="pt3">
<claim claimno="CL6" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
</patient>
</subscriber>
<subscriber subscriberid="s2">
<patient patientid="pt4">
<claim claimno="CL7" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
</patient>
</subscriber>
</plan>
<plan planno="pl2">
<subscriber subscriberid="s3">
<patient patientid="pt5">
<claim claimno="CL8" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
</patient>
</subscriber>
</plan>
</payer>
<payer payerid="p2">
<plan planno="pl3">
<subscriber subscriberid="s4">
<patient patientid="pt6">
<claim claimno="CL9" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
</patient>
<patient patientid="pt7">
<claim claimno="CL10" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
<claim claimno="CL11" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
</patient>
</subscriber>
</plan>
</payer>
</claimdata>
根据索赔号(CL2,CL5和CL7)的输入,所需的输出低于:
And the desired output is below based on the input of claim numbers (CL2,CL5 and CL7):
<claimdata>
<payer payerid="p1">
<plan planno="pl1">
<subscriber subscriberid="s1">
<patient patientid="pt1">
<claim claimno="CL2" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
</patient>
<patient patientid="pt2">
<claim claimno="CL5" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
</patient>
</subscriber>
<subscriber subscriberid="s2">
<patient patientid="pt4">
<claim claimno="CL7" amount="10">
<claimline lineno="l1" lineamount="5"></claimline>
<claimline lineno="l2" lineamount="5"></claimline>
</claim>
</patient>
</subscriber>
</plan>
</payer>
</claimdata>
Thanks In Advance.
Thanks In Advance.
推荐答案
Maybe the following is a starting point (for one record):
Maybe the following is a starting point (for one record):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="claim">
<xsl:choose>
<xsl:when test="@claimno='CL5'">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Cheers
Andi
Cheers
Andi
这篇关于将XML转换为子集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文