2009-04-26 10 views
0

を設定します。XSLTのテストは、私は次の2つのファイルを持っている

<?xml version="1.0" encoding="utf-8" ?> 
<!-- D E F A U L T H O S P I T A L P O L I C Y --> 

<xas DefaultPolicy="open" DefaultSubjectsFile="subjects.xss"> 
<rule id="R1" access="deny" object="record" subject="roles/*[name()!='Staff']"/> 
<rule id="R2" access="deny" object="diagnosis" subject="roles//Nurse"/> 
<rule id="R3" access="grant" object="record[@id=$user]" subject="roles/member[@id=$user]"/> 
</xas> 

とsubjects.xssと呼ばれる他のXMLファイルには、次のとおりです。

<?xml version="1.0" encoding="utf-8" ?> 
<subjects> 

<users> 
<member id="dupont" password="4A-4E-E9-17-5D-CE-2C-DD-43-43-1D-F1-3F-5D-94-71"> 

<name>Pierre Dupont</name> 
</member> 

<member id="durand" password="3A-B6-1B-E8-C0-1F-CD-34-DF-C4-5E-BA-02-3C-04-61"> 
<name>Jacqueline Durand</name> 

</member> 

</users> 
<roles> 

<Staff> 

<Doctor> 
<member idref="dupont"/> 

</Doctor> 
<Nurse> 

<member idref="durand"/> 
</Nurse> 

</Staff> 

</roles> 
</subjects> 

私が書いていますpolicy.xasの各ルールのサブジェクト値を読み取るxslシートで、現在ログインしているユーザー(スタイルシートの変数 "user"としてアクセス可能)がそのサブジェクト値に含まれている場合(roles // Nurse)、do何か。

現在ログインしているユーザー(「durand」と同じ$ user)がロールに含まれているかどうかはテストできません。/件名ファイル内のNurse(別のxmlファイルです)。私の質問を明確にすることを願っています。何か案は?前もって感謝します。

答えて

1

あなたの$ user変数がメンバーノードを保持していると思われますか?その場合、テストは次のようになります。 -

/roles/Nurse[member/idref=$user/@id] 

ところで、こうした「ナース」と「博士」などのデータを運ぶためにタグ名を使用することは良い習慣ではありません。効果的に言えば、それぞれ新しい役割は新しいタイプです。良いだろう: -

<roles> 
<role> 
    <name>Nurse</name> 
    <member idref="durand" /> 
</role> 
... 
</roles> 

あなたのテストは次のようになります -

/roles/role[name='Nurse' and member/idref=$user/@id] 
関連する問題