<module>
<component>
   <section>
      <ptemplateId root="1.8"/>
      <entry>
    <observation>
       <templateId root="1.24"/>
    </observation>
      </entry>
   </section>
</component>
<component>
   <section>
      <ptemplateId root="1.10"/>
      <entry>
    <observation>
       <templateId root="1.24"/>
    </observation>
      </entry>
   </section>
</component>
<component>
   <section>
      <ptemplateId root="1.23"/>
      <entry>
    <observation>
       <templateId root="1.24"/>
    </observation>
     <entryRelation>
        <observation>
         <templateId root="1.24"/>
        </observation>
     </entryRelation>
      </entry>
   </section>
</component>
<component>
       <section>
          <ptemplateId root="1.8"/>
          <entry>
        <observation>
           <templateId root="1.24"/>
        </observation>
         <entryRelation>
            <observation>
             <templateId root="1.28"/>
            </observation>
         </entryRelation>
          </entry>
       </section>
    </component>
</module>

我想在一个基于ptemplateid的模板中选择观察,我能知道它的匹配表达式吗?
<xsl:template match"******">
   <!-- some processing goes here to process
        observation if ptemplateId is 1.8... -->
</xsl:template>

<xsl:template match"******">
   <!-- some processing goes here to process
        observation if ptemplateId is other than   1.8... -->
</xsl:template>


 there can be nested observation's also. (i am looking for a match expression with axis expressions to make it more generic)

最佳答案

试试这个:

/module/component/section[ptemplateId/@root='1.23']//observation

当然,用您想要的ptemplateid/@root值代替“1.23”。这应该包括嵌套的观察结果,只要它们作为包含ptemplateid的节的子级出现在任何地方。
您可以在我的在线xpath测试仪here上进行测试。
这对你有用吗?
编辑:您也可以考虑将此变体放入<xsl:template match="..." />中。
<xsl:template match="observation[ancestor::section/ptemplateId/@root = '1.23']"/>

10-05 23:34