我有这样的XML文件:
<comp ref="C2">
<value>100uF</value>
<footprint>Capacitors_SMD:c_elec_6.3x7.7</footprint>
<datasheet>EEEFK1V101XP</datasheet>
<fields>
<field name="Manufacturer">Panasonic</field>
<field name="Voltage">35V</field>
<field name="Symbol">EEEFK1V101XP</field>
</fields>
<libsource lib="device" part="CP"/>
<sheetpath names="/" tstamps="/"/>
<tstamp>57B38AFC</tstamp>
</comp>
<comp ref="C1">
<value>100uF</value>
<footprint>Capacitors_SMD:c_elec_6.3x7.7</footprint>
<fields>
<field name="Voltage">25V</field>
<field name="Symbol">2345</field>
</fields>
<libsource lib="device" part="CP"/>
<sheetpath names="/" tstamps="/"/>
<tstamp>57B492EF</tstamp>
</comp>我想单独显示这些组件,因为它们不相似。当我使用datasheet节点时,它可以工作。
<xsl:key name="partTypeByValueAndFootprint" match="comp" use="concat(datasheet, '-', footprint, '-', value)" />
<xsl:for-each select="comp[count(. | key('partTypeByValueAndFootprint', concat(datasheet, '-', footprint, '-', value))[1]) = 1]">
<xsl:sort select="@ref" />但我不知道为什么当我使用fields/field/@name="Symbol"时,它不起作用。
<xsl:key name="partTypeByValueAndFootprint" match="comp" use="concat(fields/field/@name='Symbol', '-', footprint, '-', value)" />
<xsl:for-each select="comp[count(. | key('partTypeByValueAndFootprint', concat(fields/field/@name='Symbol', '-', footprint, '-', value))[1]) = 1]">
<xsl:sort select="@ref" />发布于 2017-03-20 21:28:35
而不是fields/field/@name='Symbol',你想要fields/field[@name='Symbol']。方括号表示要应用于选定节点的条件。
例如..。
<xsl:key name="partTypeByValueAndFootprint"
match="comp"
use="concat(fields/field[@name='Symbol'], '-', footprint, '-', value)" />https://stackoverflow.com/questions/42914222
复制相似问题