Xslt 检查取决于XSL上的属性

Xslt 检查取决于XSL上的属性,xslt,xslt-2.0,Xslt,Xslt 2.0,需要你们的帮助伙计们我有一个远程xml文件,上面有客户的详细信息 <Clients> <Client Name = "John"> <id>****</id> <id>****</id> <id>****</id> </Client> <Client Name = "David"> <

需要你们的帮助伙计们我有一个远程xml文件,上面有客户的详细信息

<Clients>
  <Client Name = "John">
    <id>****</id>
    <id>****</id>
    <id>****</id>

  </Client>

  <Client Name = "David">
    <id>****</id>
    <id>****</id>
    <id>****</id>

  </Client>
</Clients>

****
****
****
****
****
****
客户机将发送他的名字和他的id。我将通过两个步骤对照上面的xml检查这些参数

第一步是搜索与接收到的名称匹配的客户端名称 第二步是使用该客户端的id列表验证接收到的id

如果找到以上所有内容,请求将被通过,否则请求将被拒绝

有什么帮助吗?

请考虑以下示例:

XML

<Clients>
    <Client Name = "John">
        <id>123</id>
        <id>456</id>
        <id>789</id>
    </Client>
    <Client Name = "David">
        <id>234</id>
        <id>567</id>
        <id>890</id>
    </Client>
</Clients>

123
456
789
234
567
890
XSLT

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:param name="client-name"/>
<xsl:param name="id"/>

<xsl:key name="client" match="Client" use="@Name" />

<xsl:template match="/">
    <result>
        <xsl:value-of select="key('client', $client-name)/id=$id"/>
    </result>
</xsl:template>

</xsl:stylesheet>

使用参数调用此转换时:

<xsl:param name="client-name">David</xsl:param>
<xsl:param name="id">567</xsl:param>
<xsl:param name="client-name">Paul</xsl:param>
<xsl:param name="id">567</xsl:param>
David
567
结果将是:

<?xml version="1.0" encoding="UTF-8"?>
<result>true</result>
<?xml version="1.0" encoding="UTF-8"?>
<result>false</result>

真的
带参数:

<xsl:param name="client-name">David</xsl:param>
<xsl:param name="id">567</xsl:param>
<xsl:param name="client-name">Paul</xsl:param>
<xsl:param name="id">567</xsl:param>
保罗 567 或:

David
5678
结果将是:

<?xml version="1.0" encoding="UTF-8"?>
<result>true</result>
<?xml version="1.0" encoding="UTF-8"?>
<result>false</result>

假的
尝试一下:

<!-- variables to store "name" and "id" value -->
<xsl:variable name="name" select="'John'"/>
<xsl:variable name="id" select="'222'"/>

<!-- construct to match against config data -->
<xsl:choose>
    <xsl:when test="(//Client[@Name=$name][id=$id])">
        <xsl:text>Access Granted...</xsl:text>
    </xsl:when>
    <xsl:otherwise>
        <xsl:text>Access Denied!!!</xsl:text>
    </xsl:otherwise>
</xsl:choose>

已授予访问权限。。。
访问被拒绝!!!

我尝试了它,但没有成功,xml是远程文件,我必须打开它并在其上循环,检查是否有任何参数与请求参数匹配,否则将始终打印,否则将在测试中调用远程配置文件作为
文档('remoteLookUp.xml')//Client[@Name=$Name][id=$id]