目前我有以下XML:
<Rowsets>
<Rowset>
<Row>
<DrilldownDepth>0</DrilldownDepth>
<ScheduleWeek>---</ScheduleWeek>
<ABC>---</ABC>
<PQR>1500</PQR>
<XYZ>15000</XYZ>
<Quant>285</Quant>
</Row>
<Row>
<DrilldownDepth>1</DrilldownDepth>
<ScheduleWeek>12</ScheduleWeek>
<ABC>---</ABC>
<PQR>1500</PQR>
<XYZ>15000</XYZ>
<Quant>285</Quant>
</Row>
<Row>
<DrilldownDepth>2</DrilldownDepth>
<ScheduleWeek>12</ScheduleWeek>
<ABC>SUPER</ABC>
<PQR>100</PQR>
<XYZ>200</XYZ>
<Quant>300</Quant>
</Row>
<Row>
<DrilldownDepth>2</DrilldownDepth>
<ScheduleWeek>12</ScheduleWeek>
<ABC>Duper</ABC>
<PQR>100</PQR>
<XYZ>200</XYZ>
<Quant>300</Quant>
</Row>
<Row>
<DrilldownDepth>2</DrilldownDepth>
<ScheduleWeek>12</ScheduleWeek>
<ABC>Fun</ABC>
<PQR>100</PQR>
<XYZ>200</XYZ>
<Quant>300</Quant>
</Row>
<Row>
<DrilldownDepth>2</DrilldownDepth>
<ScheduleWeek>7</ScheduleWeek>
<ABC>SUPER</ABC>
<PQR>100</PQR>
<XYZ>200</XYZ>
<Quant>300</Quant>
</Row>
<Row>
<DrilldownDepth>2</DrilldownDepth>
<ScheduleWeek>7</ScheduleWeek>
<ABC>Duper</ABC>
<PQR>100</PQR>
<XYZ>200</XYZ>
<Quant>300</Quant>
</Row>
<Row>
<DrilldownDepth>2</DrilldownDepth>
<ScheduleWeek>8</ScheduleWeek>
<ABC>SUPER</ABC>
<PQR>100</PQR>
<XYZ>200</XYZ>
<Quant>300</Quant>
</Row>
</Rowset>
</Rowsets>
现在我只需<Row>
<DrilldownDepth>2</DrilldownDepth>
和<ScheduleWeek>12</ScheduleWeek>
{{1}}。我可以使用转发器/循环实现它,但我需要使用Xpath或XSLT来实现它。所以对此事的任何帮助都将不胜感激。
SOTS
答案 0 :(得分:0)
以下XPath语句使用predicate过滤器来选择包含符合指定条件的子元素的Row元素:
/Rowsets/Rowset/Row[DrilldownDepth=2 and ScheduleWeek=12]
为XSLT中应用的值使用变量:
<xsl:variable name="depth">2</xsl:variable>
<xsl:variable name="week">12</xsl:variable>
<xsl:apply-templates select="/Rowsets/Rowset/Row[DrilldownDepth=$depth and ScheduleWeek=$week]"/>
答案 1 :(得分:0)
'和'运算符的替代方法是使用第二个谓词。哪个更好取决于个人风格,但如果你在SO上查看很多答案,你会发现多谓词方法是最受欢迎的选择。
看起来像这样......
/Rowsets/Rowset/Row[DrilldownDepth='2'][ScheduleWeek='12']
注意:在文字数字周围有或没有引号的情况下同样有效。没有可能稍微更具可读性。可能稍微有点效率。这又是一种风格选择。