378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift<!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift ! CDDL HEADER START
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift !
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift ! The contents of this file are subject to the terms of the
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift ! Common Development and Distribution License, Version 1.0 only
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift ! (the "License"). You may not use this file except in compliance
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift ! with the License.
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift !
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac ! You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac ! or http://forgerock.org/license/CDDLv1.0.html.
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift ! See the License for the specific language governing permissions
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift ! and limitations under the License.
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift !
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift ! When distributing Covered Code, include this CDDL HEADER in each
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac ! file and include the License file at legal-notices/CDDLv1_0.txt.
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac ! If applicable, add the following below this CDDL HEADER, with the
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac ! fields enclosed by brackets "[]" replaced with your own identifying
8cf870d281dc8c242f083d14dfef05f24aa5fceeJnRouvignac ! information:
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift ! Portions Copyright [yyyy] [name of copyright owner]
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift !
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift ! CDDL HEADER END
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift !
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift !
a3d3ab94806056d2355afea6fe8daac41059b9fbludovicp ! Copyright 2007-2008 Sun Microsystems, Inc.
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift ! -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift<xsl:stylesheet version="1.0"
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift xmlns:adm="http://www.opends.org/admin"
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift xmlns:ldap="http://www.opends.org/admin-ldap">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:import href="java-utilities.xsl" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:import href="preprocessor.xsl" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:import href="property-types.xsl" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:output method="text" encoding="us-ascii" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Document parsing.
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:template match="/">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Generate user friendly names.
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('user-friendly-name=', $this-ufn, '&#xa;')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('user-friendly-plural-name=', $this-ufpn, '&#xa;')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Pull out the managed object synopsis (mandatory).
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:if test="not($this/adm:synopsis)">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:message terminate="yes">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('No synopsis found for managed object definition ', $this-name)" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:message>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:if>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('synopsis=', normalize-space($this/adm:synopsis), '&#xa;')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Pull out the managed object description (optional).
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:if test="$this/adm:description">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('description=', normalize-space($this/adm:description), '&#xa;')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:if>
408b8eb145348cb8f251a8abfec96e7e4e80f630matthew_swift <!--
408b8eb145348cb8f251a8abfec96e7e4e80f630matthew_swift Process tag definitions if this is the root configuration.
408b8eb145348cb8f251a8abfec96e7e4e80f630matthew_swift -->
408b8eb145348cb8f251a8abfec96e7e4e80f630matthew_swift <xsl:if test="$this-is-root">
408b8eb145348cb8f251a8abfec96e7e4e80f630matthew_swift <xsl:for-each select="$this/adm:tag-definition">
408b8eb145348cb8f251a8abfec96e7e4e80f630matthew_swift <xsl:sort select="@name" />
408b8eb145348cb8f251a8abfec96e7e4e80f630matthew_swift <xsl:value-of
408b8eb145348cb8f251a8abfec96e7e4e80f630matthew_swift select="concat('tag.', @name, '.synopsis=', normalize-space(adm:synopsis), '&#xa;')" />
408b8eb145348cb8f251a8abfec96e7e4e80f630matthew_swift </xsl:for-each>
408b8eb145348cb8f251a8abfec96e7e4e80f630matthew_swift </xsl:if>
0c45338572f2f6593fea8fc9e70bcb9ef3a6d2f8matthew_swift <!--
0c45338572f2f6593fea8fc9e70bcb9ef3a6d2f8matthew_swift Process any constraints associated with this managed object definition.
0c45338572f2f6593fea8fc9e70bcb9ef3a6d2f8matthew_swift -->
0c45338572f2f6593fea8fc9e70bcb9ef3a6d2f8matthew_swift <xsl:if test="$this/adm:constraint">
0c45338572f2f6593fea8fc9e70bcb9ef3a6d2f8matthew_swift <xsl:for-each select="$this/adm:constraint">
0c45338572f2f6593fea8fc9e70bcb9ef3a6d2f8matthew_swift <xsl:value-of
0c45338572f2f6593fea8fc9e70bcb9ef3a6d2f8matthew_swift select="concat('constraint.', position(), '.synopsis=', normalize-space(adm:synopsis), '&#xa;')" />
0c45338572f2f6593fea8fc9e70bcb9ef3a6d2f8matthew_swift </xsl:for-each>
0c45338572f2f6593fea8fc9e70bcb9ef3a6d2f8matthew_swift </xsl:if>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Process each property definition.
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:for-each select="$this-all-properties">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:sort select="@name" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Pull out the property definition synopsis (mandatory).
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:if test="not(adm:synopsis)">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:message terminate="yes">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('No synopsis found for property ', @name, ' in managed object definition ', $this-name)" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:message>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:if>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('property.', normalize-space(@name), '.synopsis=', normalize-space(adm:synopsis), '&#xa;')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Pull out the property definition description (optional).
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:if test="adm:description">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('property.', normalize-space(@name), '.description=', normalize-space(adm:description), '&#xa;')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:if>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Process alias default behavior synopsis.
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:if test="adm:default-behavior/adm:alias">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:if
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift test="not(adm:default-behavior/adm:alias/adm:synopsis)">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:message terminate="yes">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('No alias default behavior synopsis found for property ', @name, ' in managed object definition ', $this-name)" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:message>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:if>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('property.', normalize-space(@name), '.default-behavior.alias.synopsis=', normalize-space(adm:default-behavior/adm:alias/adm:synopsis), '&#xa;')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:if>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
3cbc49fe5e6d8a00a69fe1859874ed5dcff85aebmatthew_swift Process requires admin action synopsis if present.
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
3cbc49fe5e6d8a00a69fe1859874ed5dcff85aebmatthew_swift <xsl:if test="adm:requires-admin-action/*/adm:synopsis">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
3cbc49fe5e6d8a00a69fe1859874ed5dcff85aebmatthew_swift select="concat('property.', normalize-space(@name), '.requires-admin-action.synopsis=', normalize-space(adm:requires-admin-action/*/adm:synopsis), '&#xa;')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:if>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Process syntax related descriptions.
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:choose>
0e257bee0e980f6154794bac527df8101afecf18matthew_swift <xsl:when test="adm:syntax/adm:aggregation">
0e257bee0e980f6154794bac527df8101afecf18matthew_swift <!--
0e257bee0e980f6154794bac527df8101afecf18matthew_swift Process aggregation constraint synopsis (optional).
0e257bee0e980f6154794bac527df8101afecf18matthew_swift -->
0e257bee0e980f6154794bac527df8101afecf18matthew_swift <xsl:if
0e257bee0e980f6154794bac527df8101afecf18matthew_swift test="adm:syntax/adm:aggregation/adm:constraint/adm:synopsis">
0e257bee0e980f6154794bac527df8101afecf18matthew_swift <xsl:value-of
0e257bee0e980f6154794bac527df8101afecf18matthew_swift select="concat('property.', normalize-space(@name), '.syntax.aggregation.constraint-synopsis=', normalize-space(adm:syntax/adm:aggregation/adm:constraint/adm:synopsis), '&#xa;')" />
0e257bee0e980f6154794bac527df8101afecf18matthew_swift </xsl:if>
0e257bee0e980f6154794bac527df8101afecf18matthew_swift </xsl:when>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:when test="adm:syntax/adm:integer">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Process integer syntax unit synopsis (optional).
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:if test="adm:syntax/adm:integer/adm:synopsis">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('property.', normalize-space(@name), '.syntax.integer.unit-synopsis=', normalize-space(adm:syntax/adm:integer/adm:synopsis), '&#xa;')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:if>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:when>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:when test="adm:syntax/adm:string/adm:pattern">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Process string syntax pattern synopsis (mandatory if pattern defined).
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:if
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift test="not(adm:syntax/adm:string/adm:pattern/adm:synopsis)">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:message terminate="yes">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('No string pattern synopsis found for property ', @name, ' in managed object definition ', $this-name)" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:message>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:if>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('property.', normalize-space(@name), '.syntax.string.pattern.synopsis=', normalize-space(adm:syntax/adm:string/adm:pattern/adm:synopsis), '&#xa;')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:when>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:when test="adm:syntax/adm:enumeration">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Process enumeration value synopsis (mandatory).
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:for-each select="adm:syntax/adm:enumeration/adm:value">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:sort select="@name" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:if test="not(adm:synopsis)">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:message terminate="yes">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('No synopsis found for enumeration value ', @name, ' for property ', ../../../@name, ' in managed object definition ', $this-name)" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:message>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:if>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('property.', normalize-space(../../../@name), '.syntax.enumeration.value.', @name,'.synopsis=', normalize-space(adm:synopsis), '&#xa;')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:for-each>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:when>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:choose>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:for-each>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Process each relation definition.
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:for-each select="$this-all-relations">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:sort select="@name" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Generate user friendly names.
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('relation.', normalize-space(@name), '.user-friendly-name=')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:call-template name="name-to-ufn">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:with-param name="value" select="@name" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:call-template>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of select="'&#xa;'" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:if test="adm:one-to-many">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('relation.', normalize-space(@name), '.user-friendly-plural-name=')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:call-template name="name-to-ufn">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:with-param name="value"
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="adm:one-to-many/@plural-name" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:call-template>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of select="'&#xa;'" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:if>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Pull out the relation definition synopsis (mandatory).
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:if test="not(adm:synopsis)">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:message terminate="yes">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('No synopsis found for relation ', @name, ' in managed object definition ', $this-name)" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:message>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:if>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('relation.', normalize-space(@name), '.synopsis=', normalize-space(adm:synopsis), '&#xa;')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <!--
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift Pull out the relation definition description (optional).
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift -->
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:if test="adm:description">
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift <xsl:value-of
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift select="concat('relation.', normalize-space(@name), '.description=', normalize-space(adm:description), '&#xa;')" />
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:if>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:for-each>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift </xsl:template>
378c66c5d12cbe2aefbbffcf5f6d287febc186c2matthew_swift</xsl:stylesheet>