xslt如何在xml中找到我的位置?

xslt如何在xml中找到我的位置?,xml,xslt,Xml,Xslt,所以,如果我有如下所示的xml,并且我是全职在节点中,那么我如何判断我是在EMPLOYEE中,而不是在contractor中?那么,我是否可以使用一个函数来返回ROOT/PERSON/EMPLOYEE之类的内容,向我显示从FULLTIME节点开始,父节点是ROOT、PERSON和EMPLOYEE?我似乎找不到任何能提供这一点的东西。我是xslt新手,因此我的无知可能是我无法找到所需内容的一大原因 <ROOT> <PERSON> <EMPLOYEE>

所以,如果我有如下所示的xml,并且我是全职在节点中,那么我如何判断我是在EMPLOYEE中,而不是在contractor中?那么,我是否可以使用一个函数来返回ROOT/PERSON/EMPLOYEE之类的内容,向我显示从FULLTIME节点开始,父节点是ROOT、PERSON和EMPLOYEE?我似乎找不到任何能提供这一点的东西。我是xslt新手,因此我的无知可能是我无法找到所需内容的一大原因

<ROOT>
  <PERSON>
    <EMPLOYEE>
      <FULLTIME>
        <NAME>Mike</NAME>
        <LAST_NAME>Thompson</LAST_NAME>
        <EMPLOYEE_ID>1</EMPLOYEE_ID>
      </FULLTIME>
      <PARTTIME />
    </EMPLOYEE>
    <CONTRACTOR>
      <FULLTIME>
        <NAME>Mike</NAME>
        <LAST_NAME>Olsen</LAST_NAME>
        <EMPLOYEE_ID>2</EMPLOYEE_ID>
      </FULLTIME>
      <PARTTIME />
    </CONTRACTOR>
  </PERSON>
</ROOT>
如有任何建议,将不胜感激

-S

您可以使用XPath 1.0函数或使用名称空间从FULLTIME节点获取员工或承包商:

<xsl:value-of select="name(..)"/> <!-- Returns EMPLOYEE or CONTRACTOR -->
您可以使用XPath 1.0函数从FULLTIME节点获取员工或承包商,或者如果您正在使用名称空间:

<xsl:value-of select="name(..)"/> <!-- Returns EMPLOYEE or CONTRACTOR -->
祖先轴可用于通过树“查找”。您想做什么还不完全清楚,但您可以测试员工是否是您的祖先:

<xsl:if test="ancestor::EMPLOYEE" >
   ...
</xsl:if>
祖先轴可用于通过树“查找”。您想做什么还不完全清楚,但您可以测试员工是否是您的祖先:

<xsl:if test="ancestor::EMPLOYEE" >
   ...
</xsl:if>
您可以分别匹配员工/全职或承包商/全职:

<xsl:template match="EMPLOYEE/FULLTIME">
...
</xsl:template>

<xsl:template match="CONTRACTOR/FULLTIME">
...
</xsl:template>
然后在每一场比赛中,你们可以和全职员工和承包商做不同的事情

我认为,这是XSLT方式,而不是其他编程语言的过程思维。

您可以分别匹配员工/全职或承包商/全职:

<xsl:template match="EMPLOYEE/FULLTIME">
...
</xsl:template>

<xsl:template match="CONTRACTOR/FULLTIME">
...
</xsl:template>
然后在每一场比赛中,你们可以和全职员工和承包商做不同的事情


我认为,这是XSLT方法,而不是其他编程语言的过程性思维。

可以发布XSLT文件,它可能使答案更适合您的应用程序可以发布XSLT文件,它可能使答案更适合您的应用程序这就是我试图实现的目标,看看我在树中的位置。如果我在雇员手下,我想做x……如果我在承包商手下,我想做y。我将尝试祖先检查。这就是我试图完成的,就是查看我在树中的位置。如果我在雇员手下,我想做x……如果我在承包商手下,我想做y。我将尝试祖先检查。