Проблемы при написании выбора для каждого с фильтрами на нескольких полях - PullRequest
1 голос
/ 06 января 2012

У меня есть 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>

Как мне написать выбор для каждого, который будет фильтровать несколько полей, я работал над чем-то вроде этого:

<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 Ответ

1 голос
/ 06 января 2012

В общем случае вы должны хранить условия в одном предикате:

/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 .!='']

Примечание : я оставил /objects в выражении, даже если ваш образец XML не показывает его.Я предполагаю, что вы на самом деле работаете с большим документом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...