2012-01-05 43 views
1

我有一个XML文档与看起来像这样的节点与筛选中进行选择:问题写的,每多领域

<SQLIndexUsage> 
    <Property Name="database_name">ClearTrace</Property> 
    <Property Name="Object_Name">CTTraceSummary</Property> 
    <Property Name="Schema_name">dbo</Property> 
    <Property Name="Index_name">IX_CTTraceSummary_Date</Property> 
    <Property Name="Type_Desc">NONCLUSTERED</Property> 
    <Property Name="user_seeks" /> 
    <Property Name="user_scans" /> 
    <Property Name="user_lookups" /> 
    <Property Name="user_updates" /> 
    <Property Name="usage_ratio">0.00</Property> 
    <Property Name="RowError" /> 
    <Property Name="RowState">Detached</Property> 
    <Property Name="Table" /> 
    <Property Name="ItemArray"> 
    <Property>ClearTrace</Property> 
    <Property>CTTraceSummary</Property> 
    <Property>dbo</Property> 
    <Property>IX_CTTraceSummary_Date</Property> 
    <Property>NONCLUSTERED</Property> 
    <Property /> 
    <Property /> 
    <Property /> 
    <Property /> 
    <Property>0.00</Property> 
    </Property> 
    <Property Name="HasErrors">False</Property> 
</SQLIndexUsage> 

我怎样写一个for-每个选择将在多个领域进行筛选,我正在做这样的事情:

<xsl:for-each select="/objects/SQLIndexUsage/Property[@Name ='user_seeks'][1]!='' or /objects/SQLIndexUsage/Property[@Name ='user_scans']!='' or /objects/SQLIndexUsage/Property[@Name ='user_updates']!=''"> 

或者我看着这个错误?

回答

1

在一般情况下,你应该保持的条件在单个预测:

/objects/SQLIndexUsage/Property[ 
    (@Name ='user_seeks' or @Name='user_scans' or @Name='user_updates') and .!=''] 

这是更短:

/objects/SQLIndexUsage/Property[ 
    @Name[.='user_seeks' or .='user_scans' or .='user_updates'] and .!=''] 

这是有点复杂通过你的位置条件,但你仍然可以做到这一点(与工会):

/objects/SQLIndexUsage/Property[@Name='user_seeks' and .!=''][1] | 
/objects/SQLIndexUsage/Property[ 
    (@Name='user_scans' or @Name='user_updates') and .!=''] 

注意:即使您的示例XML没有显示它,我仍然在表达式上留下了/objects。我猜你实际上是在处理更大的文档。