我第一次使用xslt。我必须根据某些标准创建一个元素。
这里是i / p xml:
<FirstUser>
<User id="2" description="ABC" Type="HR"/>
</FirstUser>
<SecondUser>
<User id="3" description="ABC" Type="HR"/>
<User id="4" description="xyz" Type="Admin"/>
<User id="5" description="LMN" Type="Payroll"/>
</SecondUser>
最终的O / P
<AllUsers isFromHR='true'>
<User id="2" description="ABC" Type="HR"/>
<User id="3" description="ABC" Type="HR"/>
<User id="4" description="xyz" Type="Admin"/>
<User id="5" description="LMN" Type="Payroll"/>
</AllUsers>
业务规则:AllUsers元素有1个属性isFromHR -
如果<FirstUser>
或<SecondUser>
的类型属性中的值为true,则其值为true
是HR,否则它将是假的
如何填充isFromHR的值?其余的xml创建我已经完成了。
提前致谢。
答案 0 :(得分:2)
怎么样?
<AllUsers isFromHR="{ count((//FirstUser | //SecondUser)[@type='HR']) > 0 }">
或
<AllUsers>
<xsl:attribute
name="isFromHR"
value="count((//FirstUser | //SecondUser)[@type='HR']) > 0" />
答案 1 :(得分:0)
<xsl:template match="/">
<AllUsers>
<xsl:attribute name="isFromHR">
<xsl:choose>
<xsl:when test="//*[local-name(.)='FirstUser' or local-name(.)='SecondUser']/*/@Type[.='HR']">true</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:apply-templates />
</AllUsers >
</xsl:template>
答案 2 :(得分:0)
<AllUsers isFromHR="{descendant::@type = 'HR'}">
答案 3 :(得分:0)
输入XML缺少元素:
<FirstUser>
<User id="2" description="ABC" Type="HqR"/>
</FirstUser>
<SecondUser>
<User id="3" description="ABC" Type="H2R"/>
<User id="4" description="xyz" Type="Admin"/>
<User id="5" description="LMN" Type="Payroll"/>
</SecondUser>
无论如何,我会选择:
<AllUsers isFromHR="{//FirstUser/User/@Type = 'HR' or //SecondUser/User/@Type = 'HR'}">
如果FirstUser或SecondUser包含“HR”类型的用户,则会显示“true”。