メタディレクトリエンジンは、ポリシーのスタイルシートに、次のスタイルシートパラメータを渡します。
表 6-1 スタイルシートのパラメータ
|
パラメータ |
説明 |
|---|---|
|
srcQueryProcessor |
XdsQueryProcessorインタフェースを実装するJavaオブジェクト。これにより、スタイルシートがソースデータストアに対し、より多くの情報を照会できるようになります。 |
|
destQueryProcessor |
XdsQueryProcessorインタフェースを実装するJavaオブジェクト。これにより、スタイルシートがターゲットデータストアに対し、より多くの情報を照会できるようになります。 |
|
srcCommandProcessor |
XdsCommandProcessorインタフェースを実装するJavaオブジェクト。これにより、スタイルシートがイベントソースに対し、コマンドをライトバックできるようになります。 |
|
destCommandProcessor |
XdsCommandProcessorインタフェースを実装するJavaオブジェクト。これにより、スタイルシートがコマンドを発行して、ターゲットデータストアにコマンドを直接送信できるようになります。 |
|
dnConverter |
XdsCommandProcessorインタフェースを実装するJavaオブジェクト。これにより、スタイルシートが識別ボールトオブジェクトのDNをあるフォーマットから別のフォーマットに変換できるようになります。詳細については、「Interface DNCoverter」を参照してください。 |
|
fromNds |
ソースデータストアが識別ボールトである場合には「True」、接続システムである場合には「False」であるブール値です。 |
iManagerまたはDesignerで作成した新しいスタイルシートには、これらのパラメータの宣言が含まれるスタイルシートが事前入力されています。
スキーママッピングポリシー、入力変換ポリシー、および出力変換ポリシーでクエリやコマンドパラメータを使用する場合、次の制限が適用されます。
アプリケーションシムに発行されたクエリは、そのアプリケーションシムによって予測された形式である必要があります。つまり、スキーマ名はアプリケーションのネームスペース内にあり、シムによってどのようなXMLボキャブラリがネイティブで使用されているかをクエリで確認する必要があります。クエリには関連付けの参照は追加されません。
アプリケーションシムからの応答は、そのシムの形式で返されます。変更やスキーママッピング、関連付けの参照の解決は行われません。
eDirectory™に発行されたクエリは、eDirectoryによって予測された形式である必要があります。つまり、スキーマ名はeDirectoryネームスペース内にあり、クエリはXDSである必要があります。関連付けの参照は解決されません。
アプリケーションシムからの応答は、そのシムの形式で返されます。変更やスキーママッピングは行われません。
クエリプロセッサの使用は、拡張関数のNovell® XSLTを実装するかどうかによって決まります。クエリを実行するには、XdsQueryProcessorインタフェースのネームスペースを宣言する必要があります。この作業は、次の内容をスタイルシートの<xsl:stylesheet>または<xsl:transform>要素に追加することで行います。
xmlns:query="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsQueryProcessor"
iManagerまたはDesignerで作成したスタイルシートには、このネームスペース宣言が事前入力されています。クエリプロセッサについての詳細は、「Class XdsQueryProcessor」を参照してください。
次の例では、クエリプロセッサの1つを使用しています(長い行は折り返されているため、<で始まっていません)。このスタイルシートを表示するには、Query_Processors.xslを参照してください。
<!-- Query object name queries NDS for the passed object name -->
<xsl:template name="query-object-name">
<xsl:param name="object-name"/>
<!-- build an xds query as a result tree fragment -->
<xsl:variable name="query">
<query>
<search-class class-name="{ancestor-or-self:
:add/@class-name}"/>
<!-- NOTE: depends on CN being the naming attribute -->
<search-attr attr-name="CN">
<value><xsl:value-of select="$object-name"/
></value>
</search-attr>
<!-- put an empty read attribute in so that we don’t get -->
<!-- the whole object back -->
<read-attr/>
</query>
</xsl:variable>
<!-- query NDS -->
<xsl:variable name="result" select="query:query($destQuery
Processor,$query)"/>
<!-- return an empty or non-empty result tree fragment -->
<!-- depending on result of query -->
<xsl:value-of select="$result//instance"/>
</xsl:template>
他の例です。
<?xml version="1.0"?>
<xsl:transform
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:cmd="http://www.novell.com/nxsl/java
com.novell.nds.dirxml.driver.XdsCommandProcessor"
>
<xsl:param name="srcCommandProcessor"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="add">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
<!-- on a user add, add Engineering department to the source object -->
<xsl:variable name="dummy">
<modify class-name="{@class-name} "dest-dn="{@src-dn}">
<xsl-copy-of select="association"/>
<modify-attr attr-name="OU">
<add-value>
<value type="string">Engineering</value>
</add-value>
</modify-attr>
</modify>
</xsl:variable>
<xsl:variable name="dummy2"
select="cmd:execute($srcCommandProcessor, $dummy)"/>
</xsl:template>
</xsl:transform>