2015-06-09 23 views
0

我有一个带有<VehicleMake Word="MERC">Mercury</VehicleMake>元素的xml文档。我想将它与<NcicCode>MERC</NcicCode>代码相匹配。 我的输出仅显示匹配<MncisCode>的第一个<NcicCode>。引用文档中的<MncisCode>与我的xml文档中的<VehicleMakeCode>代码相同。如何显示匹配VehicleMake(MncisCode)的NcicCode?

电流输出

<ext:Vehicle> <j:VehicleMakeCode>MERB</j:VehicleMakeCode> </ext:Vehicle>

希望的输出应为NcicCode = MncisCode

<ext:Vehicle> <j:VehicleMakeCode>MERC</j:VehicleMakeCode> </ext:Vehicle>

我的示例XML文档

<Integration xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:tsg="http://tsgweb.com" xmlns:IXML="http://tsgweb.com" xmlns:CMCodeQueryHelper="urn:CMCodeQueryHelper" PackageID="DL Notice to DVS" MessageID="67092480" xmlns=""> 
    <Case Op="E" InternalID="1617090885" ID="12126951" xmlns:user="http://tylertechnologies.com"> 
     <Charge ID="10906495" PartyID="1466236" InternalChargeID="1616714163" InternalPartyID="704451330" xmlns:reslib="urn:reslib"> 
      <ChargeOffenseDate>06/05/2015</ChargeOffenseDate> 
      <Vehicle> 
       <VehicleMake Word="MERC">Mercury</VehicleMake> 
      </Vehicle> 
     </Charge> 
    </Case> 
    <Citation ID="5385632" xmlns:user="http://tylertechnologies.com"> 
     <CitationNumber>TLA060515C</CitationNumber> 
     <TicketDate>06/05/2015</TicketDate> 
     <Vehicle> 
      <VehicleMake Word="MERC">Mercury</VehicleMake> 
     </Vehicle> 
    </Citation> 
</Integration> 

我的样品指XML文档

<?xml version="1.0" encoding="UTF-8"?> 
<VehicleMakeMapping> 
    <Mapping> 
     <NcicCode>MERB</NcicCode> 
     <MncisCode>MERC</MncisCode> 
     <Description>Mercury Boat Co.</Description> 
    </Mapping> 
    <Mapping> 
     <NcicCode>MERC</NcicCode> 
     <MncisCode>MERC</MncisCode> 
     <Description>Mercury</Description> 
    </Mapping> 
    <Mapping> 
     <NcicCode>MERH</NcicCode> 
     <MncisCode>MERC</MncisCode> 
     <Description>Mercury Coach Corp.</Description> 
    </Mapping> 
    <Mapping> 
     <NcicCode>MERR</NcicCode> 
     <MncisCode>MERC</MncisCode> 
     <Description>Mercury Trailer Industries</Description> 
    </Mapping> 
    <Mapping> 
     <NcicCode>METE</NcicCode> 
     <MncisCode>MERC</MncisCode> 
     <Description>Meteor (Canadian Mercury)</Description> 
    </Mapping> 
    <Mapping> 
     <NcicCode>MRCU</NcicCode> 
     <MncisCode>MERC</MncisCode> 
     <Description>Mercury (See Mercury Marine)</Description> 
    </Mapping> 
</VehicleMakeMapping> 

我的示例XSLT代码

<j:VehicleMakeCode> 
     <xsl:variable name="vVehicleMakeCode" select="document(concat($gEnvPath,'\ConfigFiles\VehicleMakeMapping.xml'))/VehicleMakeMapping/Mapping[MncisCode=$vVehicleMake]/NcicCode"/> 
     <xsl:value-of select="$vVehicleMakeCode"/> 
</j:VehicleMakeCode> 
+0

在示例文档,所有的'Mapping'元素具有相同的'MncisCode',所以怎么会知道匹配哪一个?谢谢! –

+0

这个问题与以前的问题有何不同:http://stackoverflow.com/questions/30127613/how-do-i-convert-ncic-code-value-to-dccis-code-value-for-vehicle-使? –

+0

业务分析师表示(也使用'VehicleMake'描述)他们想要的。VehicleMake返回值将基于MNCIS代码。 NCIC代码没有与MNCIS中使用的车辆代码相匹配的代码。当XML中的结果包括VehicleMake时,请将该值从MNCIS值转换为VehicleMake Mapping文档中的匹配NCIC值。如果为MNCIS代码找到多个NCIC代码,请查找完全匹配并填充,否则请跳过此元素。 如果没有为MNCIS代码找到NCIC代码,请跳过填充该元素。 – Angela

回答

0

您必须添加Description也比较节点在您的谓语。我猜是这样的:

<xsl:variable name="vVehicleMakeCode" select="document(concat($gEnvPath,'\ConfigFiles\VehicleMakeMapping.xml'))/VehicleMakeMapping/Mapping[MncisCode=$vVehicleMake and Description=$vVehicleMakeContent]/NcicCode"/> 

你必须映射$vVehicleMakeContent到目标节点的内容。

编辑

试试这个来代替:

<xsl:variable name="vVehicleMakeCode" select="document(concat($gEnvPath,'\ConfigFiles\VehicleMakeMapping.xml'))/VehicleMakeMapping/Mapping[MncisCode=$vVehicleMake and MncisCode=NcicCode]/NcicCode"/> 
+0

商界人士告诉我,要找到'/ Integration/Case/Charge/Vehicle/VehicleMake/@ Word'代码和'NcicCode'之间的完全匹配。如果找不到匹配,那么我需要跳过它,即不显示它。因此,在我的情况下,基于我的xml文件,输出应该是这样的' MERC '因为'MERC'匹配'NcicCode'和'MncisCode' – Angela

+0

乔尔,业务分析师问我在'NcicCode'和'MncisCode'之间找到精确匹配时不要使用描述。所以我不确定要在xsl上改变什么来循环查找'NcicCode'和'MncisCode'之间的'Mapping'循环。xml文档具有'/ Integration/Case/Charge/Vehicle/VehicleMake/@ Word' '@ Word'是'MncisCode',我需要在'Mapping'文件中与'NcicCode'匹配。如果'NcicCode'和'MncisCode'之间没有完全匹配,那么我不需要显示代码。我该怎么做呢? – Angela