2010-10-05 95 views
1

我一直有从这里发出:XSL匹配字符串麻烦

Sharepoint issue, selective behavior?

,我想我已经缩小的问题降到这个XSL代码:

<xsl:if test="contains(translate(string(@Author), 
           'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
           'abcdefghijklmnopqrstuvwxyz'), 
         translate(substring-after($AuthUser,'\'), 
           'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
           'abcdefghijklmnopqrstuvwxyz'))"> 

综上所述,问题在于一些在列表中输入信息的员工无法看到它进行修改。我认为这段代码是应用程序决定显示信息的部分。 @Author是在列表上创建行的人(我相信它的格式为Firstname SecondName FirstLastName SecondLastName),而$ AuthUser应该是DOMAIN\FirstName LastName

我试图找出问题出来,但我无法确切地知道该条件检查。任何人都可以解释给我吗?

谢谢, EtonB。

+0

那么,你到底需要做什么? – 2010-10-05 18:04:35

+0

我已经确定最初的问题不是这个问题的答案。我会在另一个问题中发布我的实际问题。 – 2010-10-05 18:15:56

回答

0

它在$AuthUser@Author之间的斜杠之后的位之间做了不区分大小写的“包含此字符串”比较(translate()强制为小写)。因此,如果例如$ Author是“MIKE SMITH”并且$ AuthUser是“MyDomain \ Mike Smith”,它就会匹配。因为它使用的是contains()而不是完全匹配,所以如果@Author是,例如,它也会匹配。但是,“Una Jones”和$ AuthUser是“A Jones”,这看起来有点危险。

+0

因此,当$作者是'麦克约翰史密斯'将不会有匹配?有什么办法可以让它匹配吗?例如,我的全名是'A B C D',但我的用户名是'A C' – 2010-10-05 15:58:36

+0

好吧,总有办法做这种事情,但你可能需要考虑你可能需要的所有可能的组合。 @Author如何首先录制?解决这个问题的最好方法是确保两件事情的来源是一致的,然后比较它们......说了这番话之后,为Sharepoint滚动自己的身份验证代码似乎有点奇怪;它是否具有内置的基于角色的访问安全以及NT集成安全性? – 2010-10-05 15:59:47

+0

是的,我也觉得这有点奇怪,但是这是我分配的任务的范围,所以我认为我不能做其他事情,至少现在是这样。作者是从Active Directory名称中检索的,对于某些员工而言是他们的全名,而对于其他人而言只是名字和姓氏(他们是其工作对象)。我注意到在Sharepoint的右上部分,它说欢迎,如果我可以以某种方式检索该名称,它将足以与作者进行比较。你知道我怎样才能把它作为参数吗? – 2010-10-05 16:26:23