2010-10-05 97 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