我需要用下面的规则从xml转换。 Iam陷入了转型。XSLT转换基于条件获取元素并将其映射到兄弟
规则如下:
对于NS1的每场比赛:与NS1匹配值:帐号/ NS3:政策/ NS3:政策/ NS3:PolicyConditions/NS3:PolicyCondition/NS3:PolicyConditionCriteria/NS3帐户/ ns3:Locations/ns3:Name.I需要获取ns1的值:Account/ns3:Policies/ns3:Policy/ns3:PolicyConditions/ns3:PolicyCondition/ns2:ItemData并创建新标记并将其映射到ns1:Account/NS3:位置/ NS3:LocationConditions/NS3:LocationCondition/NS2:ConditionId和硬编码NS1:帐户/ NS3:位置/ NS3:LocationConditions/NS3:LocationCondition/NS2:ConditionId至0
附加样本输入和预期输出
输入XML:
<ns1:Account xmlns:ns1="API.ExposureWorkflow">
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns3:Locations xmlns:ns3="API.Objects.Exposure">
<ns3:Location>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns3:Name>LOC1-BU1</ns3:Name>
</ns3:Location>
<ns3:Location>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns3:Name>LOC2-BU1</ns3:Name>
</ns3:Location>
<ns3:Location>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns3:Name>LOC2-BU3</ns3:Name>
</ns3:Location>
</ns3:Locations>
<ns3:Policies xmlns:ns3="API.Objects.Exposure">
<ns3:Policy>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns3:PolicyConditions>
<ns3:PolicyCondition>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns3:PolicyConditionCriterias/>
</ns3:PolicyCondition>
<ns3:PolicyCondition>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns2:ItemData xmlns:ns2="API.Objects">28</ns2:ItemData>
<ns3:Name>EQ Blanket28</ns3:Name>
<ns3:PolicyConditionCriterias>
<ns3:PolicyConditionCriteria>
<ns3:Value>LOC1-BU1</ns3:Value>
</ns3:PolicyConditionCriteria>
<ns3:PolicyConditionCriteria>
<ns3:Value>LOC2-BU1</ns3:Value>
</ns3:PolicyConditionCriteria>
</ns3:PolicyConditionCriterias>
</ns3:PolicyCondition>
<ns3:PolicyCondition>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns2:ItemData xmlns:ns2="API.Objects">29</ns2:ItemData>
<ns3:Name>EQ Blanket29</ns3:Name>
<ns3:PolicyConditionCriterias>
<ns3:PolicyConditionCriteria>
<ns3:Value>LOC1-BU1</ns3:Value>
</ns3:PolicyConditionCriteria>
<ns3:PolicyConditionCriteria>
<ns3:Value>LOC2-BU3</ns3:Value>
</ns3:PolicyConditionCriteria>
</ns3:PolicyConditionCriterias>
</ns3:PolicyCondition>
</ns3:PolicyConditions>
</ns3:Policy>
</ns3:Policies>
</ns1:Account>
XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns1="API.ExposureWorkflow" xmlns:ns2="API.Objects" xmlns:ns3="API.Objects.Exposure">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<!-- template to copy elements -->
<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
<!-- template to copy attributes -->
<xsl:template match="@*">
<xsl:attribute name="{local-name()}"><xsl:value-of select="."/></xsl:attribute>
</xsl:template>
<!-- template to copy the rest of the nodes -->
<xsl:template match="comment() | text() | processing-instruction()">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>
预计输出继电器:
<ns1:Account xmlns:ns1="API.ExposureWorkflow">
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns3:Locations xmlns:ns3="API.Objects.Exposure">
<ns3:Location>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns3:Name>LOC1-BU1</ns3:Name>
<ns3:LocationConditions>
<ns3:LocationCondition>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns2:ConditionId xmlns:ns2="API.Objects">28</ns2:ConditionId>
</ns3:LocationCondition>
<ns3:LocationCondition>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns2:ConditionId xmlns:ns2="API.Objects">29</ns2:ConditionId>
</ns3:LocationCondition>
</ns3:LocationConditions>
</ns3:Location>
<ns3:Location>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns3:Name>LOC2-BU1</ns3:Name>
<ns3:LocationConditions>
<ns3:LocationCondition>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns2:ConditionId xmlns:ns2="API.Objects">28</ns2:ConditionId>
</ns3:LocationCondition>
</ns3:LocationConditions>
</ns3:Location>
<ns3:Location>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns3:Name>LOC2-BU3</ns3:Name>
<ns3:LocationConditions>
<ns3:LocationCondition>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns2:ConditionId xmlns:ns2="API.Objects">29</ns2:ConditionId>
</ns3:LocationCondition>
</ns3:LocationConditions>
</ns3:Location>
</ns3:Locations>
<ns3:Policies xmlns:ns3="API.Objects.Exposure">
<ns3:Policy>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns3:PolicyConditions>
<ns3:PolicyCondition>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns3:PolicyConditionCriterias/>
</ns3:PolicyCondition>
<ns3:PolicyCondition>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns2:ItemData xmlns:ns2="API.Objects">28</ns2:ItemData>
<ns3:Name>EQ Blanket28</ns3:Name>
<ns3:PolicyConditionCriterias>
<ns3:PolicyConditionCriteria>
<ns3:Value>LOC1-BU1</ns3:Value>
</ns3:PolicyConditionCriteria>
<ns3:PolicyConditionCriteria>
<ns3:Value>LOC2-BU1</ns3:Value>
</ns3:PolicyConditionCriteria>
</ns3:PolicyConditionCriterias>
</ns3:PolicyCondition>
<ns3:PolicyCondition>
<ns2:Id xmlns:ns2="API.Objects">0</ns2:Id>
<ns2:ItemData xmlns:ns2="API.Objects">29</ns2:ItemData>
<ns3:Name>EQ Blanket29</ns3:Name>
<ns3:PolicyConditionCriterias>
<ns3:PolicyConditionCriteria>
<ns3:Value>LOC1-BU1</ns3:Value>
</ns3:PolicyConditionCriteria>
<ns3:PolicyConditionCriteria>
<ns3:Value>LOC2-BU3</ns3:Value>
</ns3:PolicyConditionCriteria>
</ns3:PolicyConditionCriterias>
</ns3:PolicyCondition>
</ns3:PolicyConditions>
</ns3:Policy>
</ns3:Policies>
</ns1:Account>
我很抱歉,但我们不是一个代码编写的服务。具体来说,你挂断了什么?你提供的XSL只是一个不必要的复杂变体 - 这是一个开始的好地方(+/-“不必要的复杂”部分),但它没有表现出真正的努力来解决问题为自己。 –