Extracting schema structures

I have the following question:

How do I get access to a schema stored in Tamino at run time?

The scenario is that I want to create a generic method of taking a schema and then creating an XML instance that is a subset of a large XML document by navigating through the smaller schema to identify which values from the big schema are needed for the smaller XML document:

EG, if the biger schema contained “FirstName”, “Initial”, “LastName”, and there was a schema that contained only “FirstName” and “LastName”.

If I wanted to dynamically identify the nodes that I need to extract values from in the big XML document, I could do this by navigating through the smaller SCHEMA, and generating an XQuery dynamically as I identify the nodes in the smaller schema.

Another option is to generate a blank XML instance. How can I do this dynamically at run time?

How would I do this?

Stuart King

you can query on the XML Schemas in Tamino: doctype is “ino:collection”, doctype is “xs:schema”. You can do anything you do with XQuery.

regards,

Timm

sorry, typo!

you can query on the XML Schemas in Tamino: Collection is “ino:collection”, doctype is “xs:schema”. You can do anything you do with XQuery.

regards,

Timm

Hi Timm

We seem to struggle with this. Can you kindly give us an example of how to query a schema from Tamino

Hello Frikkie

Is a Xquery sample which does what you want:

declare namespace xs=“XML Schema
for $s in input()/xs:schema[//@name=“”]
return $s

You have to execute this XQuery in the “ino:collection” collection

Best regards,

Ludovic

Hi !
I’m wrestling with this query

[color=“green”]

declare namespace tf = “http://namespaces.softwareag.com/tamino/TaminoFunction
declare namespace xs=“XML Schema
declare namespace ino=“http://namespaces.softwareag.com/tamino/response2
(
for $s in input()/xs:schema
where ( ! tf:containsText ( $s/@ino:docname, “ino”) )
return
$s
)
[position() >= 1 and position() <= 3][/color]

Doesn’t works :oops: … what I need to display the current schemas with a xquery ? (I mean non-system schemas)
Regards

Joe

Hi,

try
for $i in input()/xs:schema
where not (starts-with(xs:string(tf:getDocname(root($i))),“ino:”))
return $i

Regards

harald

sorry, this was for Tamio 4.4. For earlier versions, you have to declare the namespaces as well