rules.xml 10 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <rules>
  3. <!-- Overwritten rules from base templates to handle V5 specific SMd output -->
  4. <!-- Rules to count the number of measures or category dimensions in the report part -->
  5. <rule id="hasMeasures" inputRoot="dataContainer" expression="dataItems/dataItem[@isMeasure='true' and not(@calcRef) and not(@isSummary = 'true')]"></rule>
  6. <rule id="hasCategories" inputRoot="dataContainer" expression="dataItems/dataItem[@isMeasure='false']"></rule>
  7. <rule id="hasCategoriesOrMeasures" inputRoot="dataContainer" expression="dataItems/dataItem"></rule>
  8. <rule id="hasNoMeasures" inputRoot="dataContainer" expression="not(dataItems/dataItem[@isMeasure='true' and not(@calcRef) and not(@isSummary = 'true')])"></rule>
  9. <rule id="singleCategory" inputRoot="dataContainer" expression="count(dataItems/dataItem[@isMeasure='false']) = 1"></rule>
  10. <rule id="multipleCategories" inputRoot="dataContainer" expression="count(dataItems/dataItem[@isMeasure='false']) > 1"></rule>
  11. <rule id="singleDistinctMeasure" inputRoot="dataContainer" expression="count(dataItems/dataItem[@isMeasure='true' and not(@calcRef) and not(@isSummary = 'true') and (@numCategories = 1)]) = 1"></rule>
  12. <rule id="singleMeasure" inputRoot="dataContainer" expression="count(dataItems/dataItem[@isMeasure='true' and not(@calcRef) and not(@isSummary = 'true') and (@numCategories = 1)]) = 1 or (count(dataItems/dataItem[@isMeasure='true' and not(@calcRef) and not(@isSummary = 'true')]) = 0 and dataItems/dataItem[@isEdge = 'true' and @hasMeasure = 'true']) and count(dataItems/dataItem[@isEdge = 'true']) >= 2"></rule>
  13. <rule id="multipleMeasures" inputRoot="dataContainer" expression="count(dataItems/dataItem[@isMeasure='true' and not(@calcRef) and not(@isSummary = 'true')]) > 1 or dataItems/dataItem[@isMeasure='true' and @numCategories > 1]"></rule>
  14. <rule id="maxTwoCategory" inputRoot="dataContainer" expression="count(dataItems/dataItem[@isMeasure='false']) &lt;= 2"></rule>
  15. <rule id="twoMeasures" inputRoot="dataContainer" expression="count(dataItems/dataItem[@isMeasure='true' and not(@calcRef) and not(@isSummary = 'true') and (@numCategories = 1)]) = 2"></rule>
  16. <rule id="threeMeasures" inputRoot="dataContainer" expression="count(dataItems/dataItem[@isMeasure='true' and not(@calcRef) and not(@isSummary = 'true') and (@numCategories = 1)]) = 3"></rule>
  17. <rule id="hasNoEdges" inputRoot="dataContainer" expression="not(dataItems/dataItem[@isEdge = 'true'])"></rule>
  18. <rule id="hasEdges" inputRoot="dataContainer" expression="dataItems/dataItem[@isEdge = 'true']"></rule>
  19. <rule id="hasNoNonEdges" inputRoot="dataContainer" expression="not(dataItems/dataItem[not(@isEdge = 'true') and @isMeasure='false'])"></rule>
  20. <rule id="hasTwoEdges" inputRoot="dataContainer" expression="count(dataItems/dataItem[@isEdge = 'true']) = 2"></rule>
  21. <rule id="hasSingleEdge" inputRoot="dataContainer" expression="count(dataItems/dataItem[@isEdge = 'true']) = 1"></rule>
  22. <rule id="hasOneEdgeAndOtherDimensions" inputRoot="dataContainer" expression="count(dataItems/dataItem[@isEdge = 'true']) = 1 and (count(dataItems/dataItem[@isEdge = 'false' and (@isMeasure='false' or @numCategories != 1)]) != 0 or count(dataItems/dataItem[@isMeasure='true']))"></rule>
  23. <rule id="hasTwoOrMoreNonSingleMeasures" inputRoot="dataContainer" expression="(count(dataItems/dataItem) - count(dataItems/dataItem[@isMeasure='true' and @numCategories = 1])) >= 2 or count(dataItems/dataItem[@isMeasure='true' and @numCategories = 1]) >= 2"></rule>
  24. <rule id="hasNoMeasureExpressions" inputRoot="dataContainer" expression="not(dataItems/dataItem[@isMeasure='true' and (@numCategories != 1)])"/>
  25. <rule id="hasALargerThanOneItemDimension" inputRoot="dataContainer" expression="count(dataItems/dataItem[(@numCategories != 1 or dataItem) and @isMeasure='false']) != 0"></rule>
  26. <!-- SMD element rules -->
  27. <rule id="categoryDimension" inputRoot="dataContainer" nodeIdentifier="@name" expression="dataItems/dataItem[@isMeasure='false']"></rule>
  28. <rule id="measureDimension" inputRoot="dataContainer" nodeIdentifier="@name" expression="dataItems/dataItem[@isMeasure='true' and not(@calcRef) and not(@isSummary = 'true')]"></rule>
  29. <rule id="categoryEdge" inputRoot="dataContainer" nodeIdentifier="@name" expression="dataItems/dataItem[@isEdge = 'true']"></rule>
  30. <rule id="categoryNotEdge" inputRoot="dataContainer" nodeIdentifier="@name" expression="dataItems/dataItem[@isMeasure='false' and not(@isEdge = 'true')]"></rule>
  31. <rule id="childCategory" inputRoot="dataContainer" expression="./dataItem"/>
  32. <rule id="nonSummaryChildCategory" inputRoot="dataContainer" expression="./dataItem[(@numCategories != 1 or @isMeasure='false' or @calcRef) and @isSummary != 'true']"/>
  33. <rule id="summaryChildCategory" inputRoot="dataContainer" expression="./dataItem[(@numCategories = 1 and count(../dataItem) != 1) or @isSummary = 'true']"/>
  34. <rule id="calculations" inputRoot="dataContainer" expression="../dataItem[@calcRef = current()/@name]"/>
  35. <rule id="isSummaryParent" inputRoot="dataContainer" expression="dataItem and @numCategories = 1"></rule>
  36. <rule id="notSummaryParent" inputRoot="dataContainer" expression="@numCategories != 1 or not(dataItem)"></rule>
  37. <rule id="notSingleItem" inputRoot="dataContainer" expression="@numCategories != 1 or dataItem"></rule>
  38. <rule id="singleItem" inputRoot="dataContainer" expression="@numCategories = 1 and not(dataItem)"></rule>
  39. <rule id="isEdge" inputRoot="dataContainer" expression="@isEdge = 'true'"></rule>
  40. <rule id="isNotEdge" inputRoot="dataContainer" expression="not(@isEdge = 'true')"></rule>
  41. <rule id="edgeSummaryCategory" inputRoot="dataContainer" expression="@isSummary = 'true'"/>
  42. <rule id="edgeNonSummaryCategory" inputRoot="dataContainer" expression="not(@isSummary = 'true')"/>
  43. <!-- Scoring rules based on number of measures or category dimensions in the report part -->
  44. <rule inputRoot="dataContainer" id="singleCategoryPreference" expression="count(dataItems/dataItem[@isMeasure='false']) = 1" score="1" description="MSG.VIS_RULE_SINGLE_CATEGORY_PREFERENCE"></rule>
  45. <rule inputRoot="dataContainer" id="singleMeasurePreference" expression="count(dataItems/dataItem[@isMeasure='true' and not(@calcRef) and not(@isSummary = 'true') and (@numCategories = 1)]) = 1" score="1" description="MSG.VIS_RULE_SINGLE_MEASURE_PREFERENCE"></rule>
  46. <rule inputRoot="dataContainer" id="multipleMeasurePreference" expression="count(dataItems/dataItem[@isMeasure='true' and not(@calcRef) and not(@isSummary = 'true')]) &gt; 1" score="1" description="MSG.VIS_RULE_MULTIPLE_MEASURE_PREFERENCE"></rule>
  47. <rule inputRoot="dataContainer" id="twoCategoryPreference" expression="count(dataItems/dataItem[@isMeasure='false']) = 2" score="1" description="MSG.VIS_RULE_TWO_CATEGORY_PREFERENCE"></rule>
  48. <rule inputRoot="dataContainer" id="scoreNumberCategorydimensions" expression="true()" score="count(dataItems/dataItem[@isMeasure='false'])"></rule>
  49. <rule inputRoot="dataContainer" id="scoreNumberMeasures" expression="true()" score="count(dataItems/dataItem[@isMeasure='true' and not(@calcRef) and not(@isSummary = 'true')])"></rule>
  50. <rule inputRoot="dataContainer" id="summaryPresent" expression="dataItems/dataItem[@isSummary = 'true']" score="1" description="MSG.VIS_RULE_SUMMARY_CATEGORY_AXIS"></rule>
  51. <rule inputRoot="dataContainer" id="fewCategoriesPreference" expression="dataItems/dataItem[@numCategories &lt;= 10]" score="1" description="MSG.VIS_RULE_SMALL_NUMBER_CATEGORY_PREFERENCE"></rule>
  52. <rule inputRoot="dataContainer" id="countCategories" expression="concepts/category" score="@numCategories"></rule>
  53. <rule inputRoot="dataContainer" id="summaryPresentInDimension" expression="@isSummary = 'true'" score="1"></rule>
  54. <rule inputRoot="dataContainer" id="avgAggregation" expression="dataItems/dataItem/concepts/metric/prop[@name = 'defAggregate']/@value = 'avg'" score="1" description="MSG.VIS_RULE_AGGREGATION_AVERAGE"></rule>
  55. <rule inputRoot="dataContainer" id="percentPresent" expression="dataItems/dataItem/concepts/metric/isA[text() = 'ratio']" score="1"></rule>
  56. <rule inputRoot="dataContainer" id="scoreManyNonTimeCategories" expression="sum(dataItems/dataItem[not(concepts/category/isA/text() = 'temporal') and @isMeasure='false']/@numCategories) * count(dataItems/dataItem[not(concepts/category/isA/text() = 'temporal') and @isMeasure='false']/@numCategories) > 15" score="1"/>
  57. <rule inputRoot="dataContainer" id="scoreNumCategories" expression="count(dataItems/dataItem[@isMeasure='false']/@numCategories) != 0" score="sum(dataItems/dataItem[@isMeasure='false']/@numCategories) * count(dataItems/dataItem[@isMeasure='false']/@numCategories)"/>
  58. <rule id="scoreSingleItem" inputRoot="dataContainer" expression="@numCategories = 1 and not(dataItem)" score="1"></rule>
  59. <rule id="preferenceForNonEdges_orSingleEdgeandDimension" inputRoot="dataContainer" expression="not(dataItems/dataItem[@isEdge = 'true']) or (count(dataItems/dataItem[@isEdge = 'true']) = 1 and count(dataItems/dataItem[@isEdge = 'false' and @isMeasure='false']) = 1)" score="1"></rule>
  60. <!-- V5 elements rules -->
  61. <rule id="currentNoDataHandler" inputRoot="V5Container" expression="noDataHandler"></rule>
  62. <rule id="currentMasterDetailLinks" inputRoot="V5Container" expression="masterDetailLinks"></rule>
  63. <rule id="currentConditionalStyles" inputRoot="V5Container" expression="conditionalStyles"></rule>
  64. <rule id="currentConditionalStyleRefs" inputRoot="V5Container" expression="conditionalStyleRefs"></rule>
  65. <rule id="currentConditionalRender" inputRoot="V5Container" expression="conditionalRender"></rule>
  66. <rule id="currentSummaryText" inputRoot="V5Container" expression="summaryText"></rule>
  67. <rule id="currentV2_chartSubTitle" inputRoot="V5Container" expression="v2_chartSubTitle"></rule>
  68. <rule id="currentV2_chartTitle" inputRoot="V5Container" expression="v2_chartTitle"></rule>
  69. <rule id="currentV2_chartFooter" inputRoot="V5Container" expression="v2_chartFooter"></rule>
  70. <rule id="currentReportDrills" inputRoot="V5Container" expression="reportDrills"></rule>
  71. <rule id="currentChartSuppress" inputRoot="V5Container" expression="chartSuppress"></rule>
  72. <rule id="currentAlternateText" inputRoot="V5Container" expression="alternateText"></rule>
  73. <rule id="containerNameRule" inputRoot="V5Container" expression="@name"></rule>
  74. </rules>