<!--
|
The contents of this file are subject to the terms of the Common Development and
|
Distribution License (the License). You may not use this file except in compliance with the
|
License.
|
|
You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
|
specific language governing permission and limitations under the License.
|
|
When distributing Covered Software, include this CDDL Header Notice in each file and include
|
the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
|
Header, with the fields enclosed by brackets [] replaced by your own identifying
|
information: "Portions Copyright [year] [name of copyright owner]".
|
|
Copyright 2008 Sun Microsystems, Inc.
|
! -->
|
<xsl:stylesheet version="1.0"
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
xmlns:adm="http://opendj.forgerock.org/admin"
|
xmlns:ldap="http://opendj.forgerock.org/admin-ldap">
|
<xsl:import href="java-utilities.xsl" />
|
<xsl:import href="preprocessor.xsl" />
|
<xsl:import href="property-types.xsl" />
|
<xsl:output method="text" encoding="us-ascii" />
|
<!--
|
Document parsing.
|
-->
|
<xsl:template match="/">
|
<xsl:if
|
test="not($this/adm:profile[@name='ldap']/ldap:object-class/ldap:name) and not($this-is-root)">
|
<xsl:message terminate="yes">
|
<xsl:value-of
|
select="concat('No object class found for managed object definition ', $this-name)" />
|
</xsl:message>
|
</xsl:if>
|
<xsl:value-of
|
select="concat('objectclass=',
|
normalize-space($this/adm:profile[@name='ldap']/ldap:object-class/ldap:name),
|
'
')" />
|
<xsl:for-each select="$this-all-properties">
|
<xsl:sort select="@name" />
|
<xsl:if
|
test="not(adm:profile[@name='ldap']/ldap:attribute/ldap:name)">
|
<xsl:message terminate="yes">
|
<xsl:value-of
|
select="concat('No attribute type found for property ', @name, ' in managed object definition ', $this-name)" />
|
</xsl:message>
|
</xsl:if>
|
<xsl:value-of
|
select="concat('attribute.',
|
normalize-space(@name),
|
'=',
|
normalize-space(adm:profile[@name='ldap']/ldap:attribute/ldap:name),
|
'
')" />
|
</xsl:for-each>
|
<xsl:for-each select="$this-all-relations">
|
<xsl:sort select="@name" />
|
<xsl:if test="not(adm:profile[@name='ldap']/ldap:rdn-sequence)">
|
<xsl:message terminate="yes">
|
<xsl:value-of
|
select="concat('No RDN sequence found for relation ', @name, ' in managed object definition ', $this-name)" />
|
</xsl:message>
|
</xsl:if>
|
<xsl:value-of
|
select="concat('rdn.',
|
normalize-space(@name),
|
'=',
|
normalize-space(adm:profile[@name='ldap']/ldap:rdn-sequence),
|
'
')" />
|
<xsl:choose>
|
<xsl:when
|
test="adm:profile[@name='ldap']/ldap:naming-attribute">
|
<xsl:if test="not(adm:one-to-many)">
|
<xsl:message terminate="yes">
|
<xsl:value-of
|
select="concat('Naming attribute specified for relation ',
|
@name, ' in managed object definition ',
|
$this-name, ' which is not a one-to-many relation.')" />
|
</xsl:message>
|
</xsl:if>
|
<xsl:if test="adm:one-to-many/@naming-property">
|
<xsl:message terminate="yes">
|
<xsl:value-of
|
select="concat('Naming attribute specified for one-to-many relation ',
|
@name, ' in managed object definition ',
|
$this-name, ' which uses a naming property.')" />
|
</xsl:message>
|
</xsl:if>
|
<xsl:value-of
|
select="concat('naming-attribute.',
|
normalize-space(@name),
|
'=',
|
normalize-space(adm:profile[@name='ldap']/ldap:naming-attribute),
|
'
')" />
|
</xsl:when>
|
<xsl:otherwise>
|
<xsl:value-of
|
select="concat('naming-attribute.', normalize-space(@name), '=cn
')" />
|
</xsl:otherwise>
|
</xsl:choose>
|
</xsl:for-each>
|
</xsl:template>
|
</xsl:stylesheet>
|