使用业务规则问题来生成XSLT。 [英] Genrating XSLT using business rule issue.
问题描述
大家好,
我正在尝试使用XSLT在地图中实现一些业务逻辑。
我的要求是我输入实例消息为:
Hi All,
I am trying to implementing some business logic in map using XSLT.
My requirement is that I have input instance message as :
<session id="9" charge="0" count="1">
<data id="sderFGT234Frtyh">
<account id="asd34dFGt6788853">
<DBA>TestDBA</DBA>
<NamedInsuredFirstName>Nitin</NamedInsuredFirstName>
<NamedInsuredLastName>Raj</NamedInsuredLastName>
<driver change="0" written="0">
<FirstName>Nitin</FirstName>
<FullName>Nitin Raj</FullName>
<HasCDL>Y</HasCDL>
<IndicatorNewViolation>0</IndicatorNewViolation>
<LastName>Raj</LastName>
</driver>
<driver change="0" written="0">
<FirstName>Rahul</FirstName>
<FullName>Rahul Nitin Raj</FullName>
<HasCDL>Y</HasCDL>
<IndicatorNewViolation>0</IndicatorNewViolation>
<LastName>Rahul</LastName>
</driver>
<driver change="0" written="0">
<FirstName>TestNitin</FirstName>
<FullName>Nitin Raj</FullName>
<HasCDL>Y</HasCDL>
<IndicatorNewViolation>0</IndicatorNewViolation>
<LastName>Test Raj</LastName>
</driver>
</account>
</data>
</session>
我想实现XSLT规则来生成元素 APH-CRW-FRF-REQ -IND
和 APH-CRW-PRTY-TYP-CD 。
基本元素 APH-CRW-PRTY-TYP-CD 将生成三个代码作为
14,04和03以及实施它的逻辑 如下 :
I want to implement XSLT rule to generate element APH-CRW-FRF-REQ-IND
and APH-CRW-PRTY-TYP-CD.
basically element APH-CRW-PRTY-TYP-CD will generate with three code in it as
14, 04 and 03 and logic to implement it is as follows :
< xsl:if test =" data / account / DBA / text()!=''">
< xsl:element name =" APH-CRW-PRTY-TYP-CD">
< xsl:value-of select ="' 014 '" />
$
< / xsl:element>
< xsl:element name =" APH-CRW-FRF-REQ-IND">
< / xsl:element>
< / xsl:if>
<xsl:if test="data/account/DBA/text()!=''">
<xsl:element name="APH-CRW-PRTY-TYP-CD">
<xsl:value-of select="'014'" />
</xsl:element>
<xsl:element name="APH-CRW-FRF-REQ-IND">
</xsl:element>
</xsl:if>
< xsl:for-each select =" // data / account / driver">
if data / account / NamedInsuredFirstName = data / account / driver / FirstName and data / account / NamedInsuredLastName = data / account / driver / LastName then
生成记录为:
在这种情况下,根据输入的messgae(帐户中的3个驱动程序),只有一个记录符合此条件,(04)将分配给它,其他两个将带有APH-CRW-PRTY-TYP-CD ='03'的生成货币b $ b所以马赫条件的记录将生成如下。
< xsl:element name =" ; APH-CRW-PRTY-TYP-CD">
< xsl:value-of select ="'04'" />
$
< / xsl:element>
< xsl:element name =" APH-CRW-FRF-REQ-IND">
< xsl:value-of select ="'T'" />
$
< / xsl:element>
<xsl:for-each select="//data/account/driver">
if data/account/NamedInsuredFirstName = data/account/driver/FirstName and data/account/NamedInsuredLastName = data/account/driver/LastName then
generate records as :
In this case as per input messgae (3 drivers in account) only one record will match this condition and (04) will assign to it and other two will genrate with APH-CRW-PRTY-TYP-CD = '03'
so the record who mach condition will genrate as follows.
<xsl:element name="APH-CRW-PRTY-TYP-CD">
<xsl:value-of select="'04'" />
</xsl:element>
<xsl:element name="APH-CRW-FRF-REQ-IND">
<xsl:value-of select="'T'" />
</xsl:element>
对于没有加工的记录(在这种情况下会产生两次),如果条件是genrate值如下:
< xsl:element name =" APH-CRW-PRTY-TYP-CD">
< xsl:value-of select ="'03'" />
$
< / xsl:element>
< xsl:element name =" APH-CRW-FRF-REQ-IND">
< xsl:value-of select ="'F'" />
$
< / xsl:element>
for records who is not maching (in this case will genrate two times)if condition will be genrate value as follwos :
<xsl:element name="APH-CRW-PRTY-TYP-CD">
<xsl:value-of select="'03'" />
</xsl:element>
<xsl:element name="APH-CRW-FRF-REQ-IND">
<xsl:value-of select="'F'" />
</xsl:element>
< xsl:element name =" APH-CRW-PRTY-TYP-CD">
< xsl:value-of select ="'03'" />
$
< / xsl:element>
$
< xsl:element name =" APH-CRW-FRF-REQ-IND">
< xsl:value-of select ="'F'" />
$
< / xsl:element>
<xsl:element name="APH-CRW-PRTY-TYP-CD">
<xsl:value-of select="'03'" />
< /xsl:element>
< xsl:element name="APH-CRW-FRF-REQ-IND">
<xsl:value-of select="'F'" />
< /xsl:element>
rach循环结束。
在其他示例中假设为每个循环,我们在帐户中有三个驱动程序,没有记录匹配
如果数据/帐户/ NamedInsuredFirstName = data / account / driver / FirstName和data / account / NamedInsuredLastName =数据/帐户/驱动程序/ LastName
然后
条件然后 四(4)条记录将生成
in other example suppose in for each loop , we have three drivers in account and none of records match for
if data/account/NamedInsuredFirstName = data/account/driver/FirstName and data/account/NamedInsuredLastName = data/account/driver/LastName
then
condition then four (4) record will generate with
  ; APH-CRW-PRTY-TYP-CD ='03'的三个要素 和APH-CRW-FRF-REQ-IND ='F'和APH-CRW-PRTY-TYP-CD ='04'的一条记录和APH-CRW-FRF-REQ-IND ='T'
three elements for APH-CRW-PRTY-TYP-CD = '03' and APH-CRW-FRF-REQ-IND = 'F' and one record for APH-CRW-PRTY-TYP-CD = '04' and APH-CRW-FRF-REQ-IND = 'T'
如何实施它 ?
APH-CRW-PRTY-TYP-CD和APH-CRW-FRF-REQ-IND是 无限元素。
希望我能正确解释。
提前感谢您的帮助。
how to implement it ?
APH-CRW-PRTY-TYP-CD and APH-CRW-FRF-REQ-IND are unbounded elements.
hope i explain it correctly.
thanks for help in advance.
谢谢和问候,Nitin。
Thanks and Regards, Nitin.
推荐答案
Hi Nitin,
Hi Nitin,
你可以这样:
< xsl:if test =" data / account / DBA / text()!=''">
&NBSP; < APH-CRW-PRTY-TYP-CD>
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; < xsl:value-of select =' 014' />
< / APH- CRW-PRTY-TYP-CD>
&NBSP;&NBSP; < APH-CRW-FRF-REQ-IND>
< / APH- CRW-FRF-REQ-IND>
< / xsl:if>
< xsl:choose>
< xsl:when test =" count(data / account / driver [FirstName = NamedInsuredFirstName
和LastName = <跨度style ="color:#333333; font-family:'Segoe UI','Lucida Grande',Verdana,Arial,Helvetica,sans-serif; font-size:14px"> NamedInsuredLastName ]
> 0)">
< xsl:for-each test =" / data / account / driver ">
< xsl:choose>
< xsl:when test =" FirstName = ../ NamedInsuredFirstName
和LastName = .. / NamedInsuredLastName ">
< APH-CRW-PRTY-TYP-CD>
< xsl:value-of select ='04'/>
< / APH-CRW-PRTY-TYP-CD>
< APH-CRW-FRF-REQ-IND>
< xsl:value-of select ='T'/>
< / APH-CRW-FRF-REQ-IND>
< xsl:when>
< xs:otherwise>
< APH-CRW-PRTY-TYP-CD>
< xsl:value-of select ='03'/>
< / APH-CRW-PRTY-TYP-CD>
< APH-CRW-FRF-REQ-IND>
< xsl:value-of select ='F'/>
< / APH-CRW-FRF-REQ-IND>
< / xsl:otherwise>
< / xsl:choose>
< / xsl:when>
< xsl:otherwise>
< APH-CRW-PRTY-TYP-CD>
< xsl:value-of select ='04'/>
< / APH-CRW-PRTY-TYP-CD>
< APH-CRW-FRF-REQ-IND>
< xsl:value-of select ='N'/>
< / APH-CRW-FRF-REQ-IND>
< xsl:otherwise>
< / xsl:for-each>
因为我在记事本中有这个而不是设计师,所以语法错误可能很少。但你会有这个工作..
这篇关于使用业务规则问题来生成XSLT。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!