[xsl] Re: paths not working...

Subject: [xsl] Re: paths not working...
From: "John Liebermann" <ahsan_hussain@xxxxxxxxxxxxx>
Date: Mon, 14 Jul 2003 17:26:39 -0700
How do i put the path to objects who's depth is greater than 1.

Contract Name: myWebservice
ID: 25_610_15006485306
Start Date: Jun-23-2003

Inputs
	textField_1                               <--------------------
	integerField_1					|
	decimalField_1					|            all these non bold fields are links to the
bottom
	dateField_1					|	 descriptions below (respectively)
	binaryField_1			<-------------------
	trueFalseField_1
	DataContainer_1_1
		textField_1_1
		integerField_1_1
		DataContainer_1_1_1
			textField_1_1_1
			integerField_1_1_1

Outputs
	NoValueRestrictions
		required
		optional_NoDefault
		optional_withDefault              <-----------------------
	TextValueRestrictions					|
		restrictByValue					| all these non bold fields
		restrictByRange					| are links to the bottom(respect.)
restrictByRangeNoMIN		            <---------
		restrictByRangeNoMAX
		restrictByPattern
	NumberValueRestrictions
		restrictByValue
		restrictByRange
		restrictByPattern
	OtherRestrictions
		dateHasAllRestrictions
		booleanHasValueRestrictionOnly
		trueFalseField_1
	BinaryRestrictions
		base64Encoding
		hexEncoding

Short Description:

This is an example of a complex set of inputs.

Long Description:

My way or the highway. My way or the highway. My way or the highway.

Description

textField_1
Description: textField_1_Documentation
Required: No
Default Value: hello
The value must match the following pattern: None

integerField_1
Description: None
Required: Yes
Value Restrictions: None

decimalField_1
Description: None
Required: Yes
Value Restrictions: None

dateField_1
Description: None
Required: Yes
Value Restrictions: None

binaryField_1
Description: None
Required: Yes
Binary Encoding: base64

trueFalseField_1
Description: None
Required: Yes
Value Restrictions: None

textField_1_1
Description: None
Required: Yes
Value Restrictions: None

integerField_1_1
Description: None
Required: Yes
Value Restrictions: None

textField_1_1_1
Description: None
Required: Yes
Value Restrictions: None

integerField_1_1_1
Description: None
Required: Yes
Value Restrictions: None

required
Description: None
Required: Yes
Value Restrictions: None

optional_NoDefault
Description: None
Required: No
Default Value: None
Value Restrictions: None

optional_withDefault
Description: None
Required: No
Default Value: This is the default value
Value Restrictions: None

restrictByValue
Description: None
Required: Yes
Only the following values are allowed: CA; WA; VA;

restrictByRange
Description: None
Required: Yes
Max Number of Characters: 0
Max Number of Characters: 100

restrictByRangeNoMIN
Description: None
Required: Yes
Min Number of Characters: None
Max Number of Characters: 500

restrictByRangeNoMAX
Description: None
Required: Yes
Max Number of Characters: 40
Min Number of Characters: None

restrictByPattern
Description: None
Required: Yes
The value must match the following pattern: ^Pattern

restrictByValue
Description: None
Required: Yes
Only the following values are allowed: 10; 20; 30;

restrictByRange
Description: None
Required: Yes
The value must match the following pattern: None

restrictByPattern
Description: None
Required: Yes
The value must match the following pattern: $1234

dateHasAllRestrictions
Description: None
Required: Yes
Max Value Allowed: Aug-05-2003
Max Value Allowed: Aug-27-2003

booleanHasValueRestrictionOnly
Description: None
Required: Yes
Only the following values are allowed: true;

trueFalseField_1
Description: None
Required: No
Default Value: false
Only the following values are allowed: false;

base64Encoding
Description: None
Required: Yes
Binary Encoding: base64

hexEncoding
Description: None
Required: Yes
Binary Encoding: Hex


This is how the output looks like right now. Instead of putting just names
and linking them up to the top, i would like to put the path to that field.
E.g hexEncoding (look up a few lines) should be replaced with
"Outputs/BinaryRestrictions/hexEncoding". Another example, "textField_1" (at
the very top of Descriptions) should be replaced by "Inputs/textField_1" etc
etc for all fields besides data containers.


Here is the XSL i wrote:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:template match="HSContract">
    <html>
      <head>
        <title/>
      </head>
      <body>
      	<!--<p><a href="#desc"><b>Contract Name: </b><xsl:value-of
select="@contractName"/><br /></a>-->
		<p><b>Contract Name: </b><xsl:value-of select="@contractName"/><br />
		<b>ID: </b><xsl:value-of select="@id"/><br />
		<b>Start Date: </b><xsl:value-of select="@startDate"/><br /></p>

		<xsl:apply-templates select="HSDataContainerType"/>
		<xsl:apply-templates select="HSDocumentation"/>
		<!-- processes all the nodes with either of the 6 names -->
		<xsl:apply-templates select="//HSString|//HSDouble
|//HSInteger|//HSBinary|//HSBoolean|//HSDate" mode="target" />
	  </body>
    </html>
  </xsl:template>

  <xsl:template match="HSDataContainerType">
    <b><img src="dcopenicon.gif">
    <xsl:value-of select="@name"/></img><br /></b>
    <div style="margin-left: 3em;">
    <xsl:apply-templates select="*"/></div>
  </xsl:template>

  <xsl:template match="*">
	<div><xsl:apply-templates select="HSLinkString" /></div>
	<div><xsl:apply-templates select="HSLinkDouble"/></div>
	<div><xsl:apply-templates select="HSLinkInteger"/></div>
 	<div><xsl:apply-templates select="HSLinkDate"/></div>
 	<div><xsl:apply-templates select="HSLinkBinary"/></div>
 	<div><xsl:apply-templates select="HSLinkBoolean"/></div>
  </xsl:template>

  <xsl:template name="HSLinkString" match="//HSString">
		<img src="texticon.gif"><a href="#{generate-id(.)}">
		<xsl:value-of select="@name" /></a><br /></img>
  </xsl:template>

  <xsl:template name="HSLinkerString" match="HSString" mode="target">
		<img src="texticon.gif"><a name="{generate-id(.)}">
		<b><xsl:value-of select="@name" /></b></a></img>
		<br />
		<!-- Handle HSDocumentation in here -->
		<xsl:text>Description: </xsl:text>
		<xsl:choose>
			<xsl:when test="normalize-space(HSDocumentation) = ''">
				None<br />
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="HSDocumentation" /><br />
			</xsl:otherwise>
		</xsl:choose>

		Required:
		<xsl:choose>
	 		<xsl:when test="contains(@required, 'true')">
				Yes<br />
			</xsl:when>
    	<!-- if optional, then default value exists or doesn't exist-->
			<xsl:otherwise>No<br />
				Default Value:
  			<!--if default tag has some value, display otherwise say "No Default
Value"-->
				<xsl:choose>
					<xsl:when test="normalize-space(DefaultValue) = ''">
						None<br />
					</xsl:when>
					<xsl:otherwise>
						<xsl:value-of select="DefaultValue" /><br />
					</xsl:otherwise>
				</xsl:choose>
			</xsl:otherwise>
		</xsl:choose>

		<xsl:choose>
			<xsl:when test="contains(@restrictType, '1')">
			<!-- if restrictType = 1 then display restrictions-->
   				Only the following values are allowed:
				<xsl:for-each select="restrictedValue">
					<xsl:value-of select="text()" />;
				</xsl:for-each><br />
			</xsl:when>

			<xsl:when test="contains(@restrictType, '2')">
				<xsl:for-each select="restrictedValue">
					<xsl:choose>
						<xsl:when test="normalize-space( text() ) = ''">
							Min Number of Characters: <xsl:text>None</xsl:text><br />
						</xsl:when>
						<xsl:otherwise>
							Max Number of Characters: <xsl:value-of select="text()" /><br/>
						</xsl:otherwise>
					</xsl:choose>
				</xsl:for-each>
		</xsl:when>

		<xsl:when test="contains(@restrictType, '3')">
			<!-- if restrictType = 3 then say 'Pattern Allowed:' value-->
			<xsl:text>The value must match the following pattern: </xsl:text>
			<xsl:choose>
				<!-- <xsl:when test="normalize-space(text()) = ''"> -->

				<xsl:when test="restrictedValue[.='']">
					<xsl:text>None</xsl:text><br />
				</xsl:when>
				<xsl:otherwise>

					<xsl:value-of select="restrictedValue" /><br />
				</xsl:otherwise>
			</xsl:choose>
		</xsl:when>

		<xsl:otherwise>
			Value Restrictions: None<br />
		</xsl:otherwise>

	</xsl:choose>
	<br />
  </xsl:template>

  <xsl:template name="HSLinkDouble" match="//HSDouble">
		<img src="decimalicon.gif"><a href="#{generate-id(.)}">
		<xsl:value-of select="@name" /></a><br /></img>
  </xsl:template>

  <xsl:template name="HSLinkerDouble" match="HSDouble" mode="target">
		<img src="decimalicon.gif"><a name="{generate-id(.)}">
		<b><xsl:value-of select="@name" /></b></a></img>
		<br />
		<!-- Handle HSDocumentation in here -->
		<xsl:text>Description: </xsl:text>
		<xsl:choose>
			<xsl:when test="normalize-space(HSDocumentation) = ''">
				None<br />
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="HSDocumentation" /><br />
			</xsl:otherwise>
		</xsl:choose>

		Required:
		<xsl:choose>
	 		<xsl:when test="contains(@required, 'true')">
				Yes<br />
			</xsl:when>
    	<!-- if optional, then default value exists or doesn't exist-->
			<xsl:otherwise>No<br />
				Default Value:
  			<!--if default tag has some value, display otherwise say "No Default
Value"-->
				<xsl:choose>
					<xsl:when test="normalize-space(DefaultValue) = ''">
						None<br />
					</xsl:when>
					<xsl:otherwise>
						<xsl:value-of select="DefaultValue" /><br />
					</xsl:otherwise>
				</xsl:choose>
			</xsl:otherwise>
		</xsl:choose>

		<xsl:choose>
			<xsl:when test="contains(@restrictType, '1')">
			<!-- if restrictType = 1 then display restrictions-->
   				Only the following values are allowed:
				<xsl:for-each select="restrictedValue">
					<xsl:value-of select="text()" />;
				</xsl:for-each><br />
			</xsl:when>

			<xsl:when test="contains(@restrictType, '2')">
				<xsl:for-each select="restrictedValue">
					<xsl:choose>
						<xsl:when test="normalize-space( text() ) = ''">
							Min Value Allowed: <xsl:text>None</xsl:text><br />
						</xsl:when>
						<xsl:otherwise>
							Max Value Allowed: <xsl:value-of select="text()" /><br/>
						</xsl:otherwise>
					</xsl:choose>
				</xsl:for-each>
			</xsl:when>

		<xsl:when test="contains(@restrictType, '3')">
			<!-- if restrictType = 3 then say 'Pattern Allowed:' value-->
			<xsl:text>The value must match the following pattern: </xsl:text>
			<xsl:choose>
				<!-- <xsl:when test="normalize-space(text()) = ''"> -->
				<xsl:when test="restrictedValue[.='']">
					<xsl:text>None</xsl:text><br />
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="restrictedValue" /><br />
				</xsl:otherwise>
			</xsl:choose>
		</xsl:when>

		<xsl:otherwise>
			Value Restrictions: None<br />
		</xsl:otherwise>

	</xsl:choose>
	<br />
  </xsl:template>

  <xsl:template name="HSLinkInteger" match="//HSInteger">
		<img src="integericon.gif"><a href="#{generate-id(.)}">
		<xsl:value-of select="@name" /></a><br /></img>
  </xsl:template>

  <xsl:template name="HSLinkerInteger" match="HSInteger" mode="target">
		<img src="integericon.gif"><a name="{generate-id(.)}">
		<b><xsl:value-of select="@name" /></b></a></img>
		<br />
		<!-- Handle HSDocumentation in here -->
		<xsl:text>Description: </xsl:text>
		<xsl:choose>
			<xsl:when test="normalize-space(HSDocumentation) = ''">
				None<br />
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="HSDocumentation" /><br />
			</xsl:otherwise>
		</xsl:choose>

		Required:
		<xsl:choose>
	 		<xsl:when test="contains(@required, 'true')">
				Yes<br />
			</xsl:when>
    	<!-- if optional, then default value exists or doesn't exist-->
			<xsl:otherwise>No<br />
				Default Value:
  			<!--if default tag has some value, display otherwise say "No Default
Value"-->
				<xsl:choose>
					<xsl:when test="normalize-space(DefaultValue) = ''">
						None<br />
					</xsl:when>
					<xsl:otherwise>
						<xsl:value-of select="DefaultValue" /><br />
					</xsl:otherwise>
				</xsl:choose>
			</xsl:otherwise>
		</xsl:choose>

		<xsl:choose>
			<xsl:when test="contains(@restrictType, '1')">
			<!-- if restrictType = 1 then display restrictions-->
   				Only the following values are allowed:
				<xsl:for-each select="restrictedValue">
					<xsl:value-of select="text()" />;
				</xsl:for-each><br />
			</xsl:when>

			<xsl:when test="contains(@restrictType, '2')">
				<xsl:for-each select="restrictedValue">
					<xsl:choose>
						<xsl:when test="normalize-space( text() ) = ''">
							Min Value Allowed: <xsl:text>None</xsl:text><br />
						</xsl:when>
						<xsl:otherwise>
							Max Value Allowed: <xsl:value-of select="text()" /><br/>
						</xsl:otherwise>
					</xsl:choose>
				</xsl:for-each>
		</xsl:when>

		<xsl:when test="contains(@restrictType, '3')">
			<!-- if restrictType = 3 then say 'Pattern Allowed:' value-->
			<xsl:text>The value must match the following pattern: </xsl:text>
			<xsl:choose>
				<!-- <xsl:when test="normalize-space(text()) = ''"> -->
				<xsl:when test="restrictedValue[.='']">
					<xsl:text>None</xsl:text><br />
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="restrictedValue" /><br />
				</xsl:otherwise>
			</xsl:choose>
		</xsl:when>

		<xsl:otherwise>
			Value Restrictions: None<br />
		</xsl:otherwise>
	</xsl:choose>
	<br />
  </xsl:template>

  <xsl:template name="HSLinkBinary" match="//HSBinary">
		<img src="binaryicon.gif"><a href="#{generate-id(.)}">
		<xsl:value-of select="@name" /></a><br /></img>
  </xsl:template>

  <xsl:template name="HSLinkerBinary" match="HSBinary" mode="target">
		<img src="binaryicon.gif"><a name="{generate-id(.)}">
		<b><xsl:value-of select="@name" /></b></a></img>
		<br />
		<!-- Handle HSDocumentation in here -->
		<xsl:text>Description: </xsl:text>
		<xsl:choose>
			<xsl:when test="normalize-space(HSDocumentation) = ''">
				None<br />
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="HSDocumentation" /><br />
			</xsl:otherwise>
		</xsl:choose>

		Required:
		<xsl:choose>
	 		<xsl:when test="contains(@required, 'true')">
				Yes<br />
			</xsl:when>
    	<!-- if optional, then default value exists or doesn't exist-->
			<xsl:otherwise>No<br />
				Default Value:
  			<!--if default tag has some value, display otherwise say "No Default
Value"-->
				<xsl:choose>
					<xsl:when test="normalize-space(DefaultValue) = ''">
						None<br />
					</xsl:when>
					<xsl:otherwise>
						<xsl:value-of select="DefaultValue" /><br />
					</xsl:otherwise>
				</xsl:choose>
			</xsl:otherwise>
		</xsl:choose>

		<xsl:choose>
			<xsl:when test="contains(@restrictType, '1')">
			<!-- if restrictType = 1 then display restrictions-->
   				Only the following values are allowed:
				<xsl:for-each select="restrictedValue">
					<xsl:value-of select="text()" />;
				</xsl:for-each><br />
			</xsl:when>

			<xsl:when test="contains(@restrictType, '2')">
				<xsl:for-each select="restrictedValue">
					<xsl:choose>
						<xsl:when test="normalize-space( text() ) = ''">
							Min Value Allowed: <xsl:text>None</xsl:text><br />
						</xsl:when>
						<xsl:otherwise>
							Max Value Allowed: <xsl:value-of select="text()" /><br/>
						</xsl:otherwise>
					</xsl:choose>
				</xsl:for-each>
		</xsl:when>

		<xsl:when test="contains(@restrictType, '3')">
			<!-- if restrictType = 3 then say 'Pattern Allowed:' value-->
			<xsl:text>The value must match the following pattern: </xsl:text>
			<xsl:choose>
				<!-- <xsl:when test="normalize-space(text()) = ''"> -->
				<xsl:when test="restrictedValue[.='']">
					<xsl:text>None</xsl:text><br />
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="restrictedValue" /><br />
				</xsl:otherwise>
			</xsl:choose>
		</xsl:when>

		<xsl:otherwise>Binary Encoding:
  			<xsl:choose>
				<xsl:when test="contains(@binaryEncoding, '0')">
					base64<br />
				</xsl:when>
				<xsl:otherwise>
					Hex <br />
				</xsl:otherwise>
			</xsl:choose>
		</xsl:otherwise>
	</xsl:choose>
	<br />
  </xsl:template>

  <xsl:template name="HSLinkDate" match="//HSDate">
		<img src="dateicon.gif"><a href="#{generate-id(.)}">
		<xsl:value-of select="@name" /></a><br /></img>
  </xsl:template>

  <xsl:template name="HSLinkerDate" match="HSDate" mode="target">
		<img src="dateicon.gif"><a name="{generate-id(.)}">
		<b><xsl:value-of select="@name" /></b></a></img>
		<br />
		<!-- Handle HSDocumentation in here -->
		<xsl:text>Description: </xsl:text>
		<xsl:choose>
			<xsl:when test="normalize-space(HSDocumentation) = ''">
				None<br />
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="HSDocumentation" /><br />
			</xsl:otherwise>
		</xsl:choose>

		Required:
		<xsl:choose>
	 		<xsl:when test="contains(@required, 'true')">
				Yes<br />
			</xsl:when>
    	<!-- if optional, then default value exists or doesn't exist-->
			<xsl:otherwise>No<br />
				Default Value:
  			<!--if default tag has some value, display otherwise say "No Default
Value"-->
				<xsl:choose>
					<xsl:when test="normalize-space(DefaultValue) = ''">
						None<br />
					</xsl:when>
					<xsl:otherwise>
						<xsl:value-of select="DefaultValue" /><br />
					</xsl:otherwise>
				</xsl:choose>
			</xsl:otherwise>
		</xsl:choose>

		<xsl:choose>
			<xsl:when test="contains(@restrictType, '1')">
			<!-- if restrictType = 1 then display restrictions-->
   				Only the following values are allowed:
				<xsl:for-each select="restrictedValue">
					<xsl:value-of select="text()" />;
				</xsl:for-each><br />
			</xsl:when>

			<xsl:when test="contains(@restrictType, '2')">
				<xsl:for-each select="restrictedValue">
					<xsl:choose>
						<xsl:when test="normalize-space( text() ) = ''">
							Min Value Allowed: <xsl:text>None</xsl:text><br />
						</xsl:when>
						<xsl:otherwise>
							Max Value Allowed: <xsl:value-of select="text()" /><br/>
						</xsl:otherwise>
					</xsl:choose>
				</xsl:for-each>
		</xsl:when>

		<xsl:when test="contains(@restrictType, '3')">
			<!-- if restrictType = 3 then say 'Pattern Allowed:' value-->
			<xsl:text>The value must match the following pattern: </xsl:text>
			<xsl:choose>
				<!-- <xsl:when test="normalize-space(text()) = ''"> -->
				<xsl:when test="restrictedValue[.='']">
					<xsl:text>None</xsl:text><br />
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="restrictedValue" /><br />
				</xsl:otherwise>
			</xsl:choose>
		</xsl:when>

		<xsl:otherwise>
			Value Restrictions: None<br />
		</xsl:otherwise>

	</xsl:choose>
	<br />
  </xsl:template>

  <xsl:template name="HSLinkBoolean" match="//HSBoolean">
		<img src="truefalseicon.gif"><a href="#{generate-id(.)}">
		<xsl:value-of select="@name" /></a><br /></img>
  </xsl:template>

  <xsl:template name="HSLinkerBoolean" match="HSBoolean" mode="target">
		<img src="truefalseicon.gif"><a name="{generate-id(.)}">
		<b><xsl:value-of select="@name" /></b></a></img>
		<br />
		<!-- Handle HSDocumentation in here -->
		<xsl:text>Description: </xsl:text>
		<xsl:choose>
			<xsl:when test="normalize-space(HSDocumentation) = ''">
				None<br />
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="HSDocumentation" /><br />
			</xsl:otherwise>
		</xsl:choose>

		Required:
		<xsl:choose>
	 		<xsl:when test="contains(@required, 'true')">
				Yes<br />
			</xsl:when>
    	<!-- if optional, then default value exists or doesn't exist-->
			<xsl:otherwise>No<br />
				Default Value:
  			<!--if default tag has some value, display otherwise say "No Default
Value"-->
				<xsl:choose>
					<xsl:when test="normalize-space(DefaultValue) = ''">
						None<br />
					</xsl:when>
					<xsl:otherwise>
						<xsl:value-of select="DefaultValue" /><br />
					</xsl:otherwise>
				</xsl:choose>
			</xsl:otherwise>
		</xsl:choose>

		<xsl:choose>
			<xsl:when test="contains(@restrictType, '1')">
			<!-- if restrictType = 1 then display restrictions-->
   				Only the following values are allowed:
				<xsl:for-each select="restrictedValue">
					<xsl:value-of select="text()" />;
				</xsl:for-each><br />
			</xsl:when>

			<xsl:when test="contains(@restrictType, '2')">
				<xsl:for-each select="restrictedValue">
					<xsl:choose>
						<xsl:when test="normalize-space( text() ) = ''">
							Min Value Allowed: <xsl:text>None</xsl:text><br />
						</xsl:when>
						<xsl:otherwise>
							Max Value Allowed: <xsl:value-of select="text()" /><br/>
						</xsl:otherwise>
					</xsl:choose>
				</xsl:for-each>
		</xsl:when>

		<xsl:when test="contains(@restrictType, '3')">
			<!-- if restrictType = 3 then say 'Pattern Allowed:' value-->
			<xsl:text>The value must match the following pattern: </xsl:text>
			<xsl:choose>
				<!-- <xsl:when test="normalize-space(text()) = ''"> -->
				<xsl:when test="restrictedValue[.='']">
					<xsl:text>None</xsl:text><br />
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="restrictedValue" /><br />
				</xsl:otherwise>
			</xsl:choose>
		</xsl:when>

		<xsl:otherwise>
			Value Restrictions: None<br />
		</xsl:otherwise>

	</xsl:choose>
	<br />
  </xsl:template>

  <xsl:template name="HSDoc" match="HSDocumentation">
	<!--<p><a name="desc"><b>Short Description:</b><br /><br /></a>-->
	<p><b>Short Description:</b><br /><br />
	<xsl:apply-templates select="shortDescription" /><br /><br />
 	<b>Long Description:</b><br /><br />
	<xsl:apply-templates select="descriptionSection" /></p>
  </xsl:template>

  <xsl:template name="shortDescription" match="//shortDescription">
	<xsl:value-of select="text()"/>
  </xsl:template>

  <xsl:template name= "descriptionSection" match="//descriptionSection">
	<xsl:value-of select="text()"/><br /><br /><p><b>Description</b></p>
  </xsl:template>

</xsl:stylesheet>

Here is teh XMLi am working with:



<HSContract contractCategory="2" contractName="myWebservice"
contractType="3" expirationDate="Jun-23-2013" id="25_610_15006485306"
limitMaxConcurrentThreads="false" logEnabled="true" maxConcurrentThreads="2"
revision="25_33" runBatchInParallel="false" startDate="Jun-23-2003">
	<imagePath />
	<HSDataContainerType list="true" name="Inputs" required="true" revision=""
systype="true">
		<HSString name="textField_1" restrictType="3" xmlNodeType="1">
			<DefaultValue>hello</DefaultValue>
			<HSDocumentation>
				<shortDescription><![CDATA[
textField_1_Documentation]]></shortDescription>
			</HSDocumentation>
			<restrictedValue />
		</HSString>
		<HSInteger name="integerField_1" required="true" xmlNodeType="1" />
		<HSDouble name="decimalField_1" required="true" xmlNodeType="1" />
		<HSDate isCacheKey="false" name="dateField_1" required="true"
xmlNodeType="1" />
		<HSBinary binaryEncoding="0" name="binaryField_1" required="true"
xmlNodeType="1" />
		<HSBoolean name="trueFalseField_1" required="true" xmlNodeType="1">
			<DefaultValue>false</DefaultValue>
		</HSBoolean>
		<HSDataContainerType name="DataContainer_1_1" required="true" revision="">
			<HSString name="textField_1_1" required="true" xmlNodeType="1" />
			<HSInteger name="integerField_1_1" required="true" xmlNodeType="1" />
			<HSDataContainerType name="DataContainer_1_1_1" required="true"
revision="">
				<HSString name="textField_1_1_1" required="true" xmlNodeType="1" />
				<HSInteger name="integerField_1_1_1" required="true" xmlNodeType="1" />
			</HSDataContainerType>
		</HSDataContainerType>
	</HSDataContainerType>
	<HSDataContainerType list="true" name="Outputs" required="true" revision=""
systype="true">
		<HSDataContainerType name="NoValueRestrictions" required="true"
revision="">
			<HSString name="required" required="true" xmlNodeType="1" />
			<HSString name="optional_NoDefault" xmlNodeType="1">
				<DefaultValue />
			</HSString>
			<HSString name="optional_withDefault" xmlNodeType="1">
				<DefaultValue>This is the default value</DefaultValue>
			</HSString>
		</HSDataContainerType>
		<HSDataContainerType name="TextValueRestrictions" required="true"
revision="">
			<HSString name="restrictByValue" required="true" restrictType="1"
xmlNodeType="1">
				<restrictedValue>CA</restrictedValue>
				<restrictedValue>WA</restrictedValue>
				<restrictedValue>VA</restrictedValue>
			</HSString>
			<HSString name="restrictByRange" required="true" restrictType="2"
xmlNodeType="1">
				<restrictedValue>0</restrictedValue>
				<restrictedValue>100</restrictedValue>
			</HSString>
			<HSString name="restrictByRangeNoMIN" required="true" restrictType="2"
xmlNodeType="1">
				<restrictedValue />
				<restrictedValue>500</restrictedValue>
			</HSString>
			<HSString name="restrictByRangeNoMAX" required="true" restrictType="2"
xmlNodeType="1">
				<restrictedValue>40</restrictedValue>
				<restrictedValue />
			</HSString>
			<HSString name="restrictByPattern" required="true" restrictType="3"
xmlNodeType="1">
				<restrictedValue>^Pattern</restrictedValue>
			</HSString>
		</HSDataContainerType>
		<HSDataContainerType name="NumberValueRestrictions" required="true"
revision="">
			<HSInteger name="restrictByValue" required="true" restrictType="1"
xmlNodeType="1">
				<restrictedValue>10</restrictedValue>
				<restrictedValue>20</restrictedValue>
				<restrictedValue>30</restrictedValue>
			</HSInteger>
			<HSInteger name="restrictByRange" required="true" restrictType="3"
xmlNodeType="1">
				<restrictedValue />
			</HSInteger>
			<HSInteger name="restrictByPattern" required="true" restrictType="3"
xmlNodeType="1">
				<restrictedValue>$1234</restrictedValue>
			</HSInteger>
		</HSDataContainerType>
		<HSDataContainerType name="OtherRestrictions" required="true" revision="">
			<HSDate isCacheKey="false" name="dateHasAllRestrictions" required="true"
restrictType="2" xmlNodeType="1">
				<restrictedValue>Aug-05-2003</restrictedValue>
				<restrictedValue>Aug-27-2003</restrictedValue>
			</HSDate>
			<HSBoolean name="booleanHasValueRestrictionOnly" required="true"
restrictType="1" xmlNodeType="1">
				<DefaultValue>false</DefaultValue>
				<restrictedValue>true</restrictedValue>
			</HSBoolean>
			<HSBoolean name="trueFalseField_1" restrictType="1" xmlNodeType="1">
				<DefaultValue>false</DefaultValue>
				<restrictedValue>false</restrictedValue>
			</HSBoolean>
		</HSDataContainerType>
		<HSDataContainerType name="BinaryRestrictions" required="true"
revision="">
			<HSBinary binaryEncoding="0" name="base64Encoding" required="true"
xmlNodeType="1">
				<DefaultValue />
			</HSBinary>
			<HSBinary binaryEncoding="1" name="hexEncoding" required="true"
xmlNodeType="1">
				<DefaultValue />
			</HSBinary>
		</HSDataContainerType>
	</HSDataContainerType>
	<HSDataContainerType name="Settings" required="true" revision=""
systype="true">
		<HSString name="HSUserId" systype="true" xmlNodeType="1">
			<DefaultValue />
		</HSString>
		<HSDataContainerType name="ServiceParameters" optionalOrigin="true"
revision="" systype="true" />
		<HSString name="HSLibName" systype="true" xmlNodeType="1">
			<DefaultValue />
		</HSString>
		<HSBoolean name="batchStopOnError" systype="true" xmlNodeType="1">
			<DefaultValue>true</DefaultValue>
		</HSBoolean>
		<HSDouble name="cost" systype="true" xmlNodeType="1">
			<DefaultValue>0.0</DefaultValue>
		</HSDouble>
		<HSInteger name="timeout" systype="true" xmlNodeType="1">
			<DefaultValue>0</DefaultValue>
		</HSInteger>
		<HSString name="locale" systype="true" xmlNodeType="1">
			<DefaultValue />
		</HSString>
		<HSString name="languageCode" systype="true" xmlNodeType="1">
			<DefaultValue />
		</HSString>
		<HSDataContainerType name="LibURIs" optionalOrigin="true" revision=""
systype="true">
			<HSString name="location" required="true" systype="true" xmlNodeType="1">
				<DefaultValue />
			</HSString>
			<HSBoolean name="enableAlternateLocations" required="true" systype="true"
xmlNodeType="1">
				<DefaultValue>false</DefaultValue>
			</HSBoolean>
		</HSDataContainerType>
	</HSDataContainerType>
	<HSDocumentation>
		<shortDescription><![CDATA[ This is an example of a complex set of inputs.
  ]]></shortDescription>
		<descriptionSection title="myWebserviceDesc"><![CDATA[ My way or the
highway. My way or the highway. My way or the highway. My way or the
highway. My way or the highway. My way or the highway. My way or the
highway.
  ]]></descriptionSection>
		<returnCodeDescription code="" />
	</HSDocumentation>
</HSContract>


Any hints/suggestions would be greatly appreciated.

John L.


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread