这是我第一次使用 XSLT 文件。我必须使用 XSL 文件更改报告,并且遇到以下问题:
- 我有 3 个变量必须匹配才能识别我正确的 XML 标记
- 这些变量之一在子子标签中定义
- 我的结果位于第一个子标签中
要选择正确的属性,我使用以下 XSL 代码:
<xsl:for-each select="MSMResults/MSMVarContribs/Contrib">
<xsl:variable name="PrtAsmType"><xsl:value-of select="@PrtAsmType"/></xsl:variable>
<xsl:variable name="CadName"><xsl:value-of select="@PrtAsmCadName"/></xsl:variable>
<xsl:variable name="ContribType"><xsl:value-of select="@Type"/></xsl:variable>
<xsl:variable name="ID"><xsl:value-of select="@ID"/></xsl:variable>
<xsl:value-of select="/CETOLReport/PrtAsm[@Type=$PrtAsmType and @CadName=$CadName and /Feature/SizeDimension/Variable/@ID=$ID]//SizeDimension/@Note"/>
这是 XML 文件(已缩短):
<CETOLReport>
<PrtAsm Type="PART" CadName="PRT0001" Name="PRT0001">
<VariationRule>
<Alerts Count="0"/>
<Feature>
...
</Feature>
...
<Feature Note="">
<Alerts Count="0"/>
<SizeDimension Note="PRT001
dim.# 01">
<Tolerance Lower="0.1" Upper="0.2"/>
<VariationRule ControlSkew="TRUE"/>
...
<Variable Note="" Nominal="9" ID="12">
<Distribution Mean="9.149999999999999"/>
<Alerts Count="0"/>
</Variable>
</SizeDimension>
<Dimension>
...
</Dimension>
<Dimension>
...
</Dimension>
</Feature>
<Feature>
...
</Feature>
</PrtAsm>
</CETOLReport>
总结:
我必须匹配
Type
中的属性<PrtAsm>
CadName
中的属性<PrtAsm>
ID
中的属性<PrtAsm/Feature/SizeDimension/Variable>
作为我想要的输出
Note
中的属性<PrtAsm/Feature/SizeDimension>
我必须改变什么
<xsl:value-of select="/CETOLReport/PrtAsm[@Type=$PrtAsmType and @CadName=$CadName and /Feature/SizeDimension/Variable/@ID=$ID]//SizeDimension/@Note"/>
才能得到正确的答案?