Re: Help on XML Schema generation using XSLT

Silent lights <[email protected]>
Newsgroups gmane.text.xml.schema.devel
Message-ID <[email protected]>
Hi Michael and all,
I was able to do the checking on numbers, boolean and the rest I treated as string. Like,

<xsl:template name="getType">
		<xsl:param name="curr"/>
		<xsl:param name="dType"/>
		<xsl:choose>
			<!-- Test if it is a Number -->
			<xsl:when test="number($curr) = number($curr)">
				<xsl:value-of select="concat($dType, 'xs:integer')"/>
			</xsl:when>
			<!-- Test if it is a Boolean -->
			<xsl:when test="contains('/true/True/TRUE/false/FALSE/False/',concat('/',$curr,'/')) and string-length ($curr) &lt; 5">
				<xsl:value-of select="concat($dType, 'xs:boolean')"/>
				<!--<xsl:value-of select="boolean"/>-->
			</xsl:when>
			<!-- It is a String -->
			<xsl:otherwise>
				<xsl:value-of select="concat($dType, 'xs:string')"/>
				<!--<xsl:value-of select="string"/>-->
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>

I was wondering if there is a way to distinguish between decimals and date. 

I am generating this Schema and I have an output document (XSD). I like to consider this as a second input and check it with another incoming XML document. - means I have two input documents. Is there any way to handle something like document containers..? any suggestions on how such things would be done !? 

Thank you
Densil

--- On Tue, 31/8/10, Michael Kay <[email protected]> wrote:

> From: Michael Kay <[email protected]>
> Subject: Re: Help on XML Schema generation using XSLT
> To: "Silent lights" <[email protected]>
> Cc: "Matthieu Ricaud-Dussarget" <[email protected]>, "Edward A SSG RES USAR USARCCheney" <[email protected]>, [email protected]
> Date: Tuesday, 31 August, 2010, 17:29
>  On 31/08/2010 3:50 PM, Silent lights
> wrote:
> > Hi there,
> > I am trying to solve one issue here.. How do I check
> for the data type for an element and its attribute..
> > 
> > I tried something like,
> > 
> > <xsl:if test="not(string(.) castable as
> xs:integer)">
> >        <xsl:text>Following
> value is not an integer:</xsl:text>
> >        <xsl:value-of
> select="."/>
> >      </xsl:if>
> > 
> > but looks like it doesnt work on XSLT 1.0 and XPath
> 1.0.. Is there a way to check the data type for integer,
> decimal, string and boolean perhaps ?
> > 
> There's no easy way in XSLT 1.0. You'll have to do it the
> hard way, by actually parsing the value against the lexical
> rules, using the limited machinery available of translate(),
> substring-before(), substring-after(), and so on. You could
> start by testing to see whether number(x) returns NaN.
> 
> Michael Kay
> Saxonica
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.