Création d'un exemple de mot de passe : principe de création

La feuille de style suivante peut être utilisée pour un principe de création. Elle crée un utilisateur, génère un mot de passe pour l'utilisateur à partir de ses attributs Surname et CN et réalise une transformation d'identité (qui passe à travers tous les éléments du document à l'exception des événements que vous tentez d'intercepter et de transformer).

<?xml version="1.0" encoding="ISO-8859-1"?> 

<!-- This stylesheet has an example of how to replace a create rule with
an XSLT stylesheet and supply an initial password for "User" objects. -->

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform
"version="1.0">

<!-- ensure we have required NDS attributes -->
<xsl:template match="add">
<xsl:if test="add-attr[@attr-name='Surname'] and
add-attr[@attr-name='CN']">
<!-- copy the add through -->
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<!-- add a <password> element -->
<xsl:call-template name="create-password"/>
</xsl:copy>
</xsl:if>

<!-- if the xsl:if fails, we don't have all the required attributes
so we won't copy the add through, and the create rule will veto the add -->

</xsl:template>

<xsl:template name="create-password">
<password>
<xsl:value-of select="concat(add-attr[@attr-name='Surname']/value,
'-',add-attr[@attr-name='CN']/value)"/>
</password>
</xsl:template>

<!-- identity transform for everything we don't want to change -->

<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

</xsl:transform>