我试图准确理解785行在这里做了什么:
但我在文档中找不到明确的解释,例如:这里:
即。我可以理解针对单个命名空间的目标(" ps"),但是第二个命名空间(" d")的添加是什么呢?
编辑:跟进澄清:鉴于'协议'将会成功解析以此为开头的文档。命名空间在文档中是小写的,但在代码中是大写的?
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Version="2.0" >
答案 0 :(得分:2)
通过XPath查询的响应使用两个不同的名称空间
p
命名空间前缀的命名空间用于SAML
Core(urn:oasis:names:tc:SAML:2.0:protocol
)。ds
的命名空间用于XML Signature
(http://www.w3.org/2000/09/xmldsig#
)。并且两者都通过代码中引用行的REXML::XPath.match
参数声明到XPath处理器:
{ "p" => PROTOCOL, "ds" => DSIG },
名称空间前缀 (p
)是任意的,无需与文档中使用的名称匹配。 名称空间 (urn:oasis:names:tc:SAML:2.0:protocol
)非常重要,必须与文档中使用的名称相匹配。两者都区分大小写。