Visit www.invinet.org

Ejemplo de la Metodología UBL para las Lista de Códigos

Explicamos un ejemplo de la Metología UBL para Listas de Códigos, mostrando las partes más representativas de los ficheros que intervienen en la metodología

Vamos a entrar un poco en detalle en la aplicación de la metodología, con un pequeño ejemplo.

Como su propio nombre indica, la Metodología UBL para Listas de Códigos y Validación de Valor, tiene dos objetivos principales: permitir restringir un valor a uno perteneciente a una lista de códigos y validar un valor según las reglas que se le impongan; este ejemplo será del primer caso.

Para ello, será necesario hacer:

  1. Fichero con las restricciones (*.cva): asocian las listas de códigos al documento XML a validar.
  2. Ficheros genericode (*.gc): contienen las listas de códigos que se usarán para validar.

En el fichero CVA se pueden asociar metadatos a cada lista de valores; en caso de que se haya hecho, entonces será necesario crear una hoja de estilos, que tendrá la información sobre como procesar esos metadatos.
Fichero CVA

El fichero CVA (context/value association) es el fichero en el que se indican las restricciones, sobre los elementos o atributos del documento XML, de pertenecer a una o varias listas de códigos.

A continuación pegamos un ejemplo sencillo de fichero CVA:

<?xml version=”1.0″ encoding=”UTF-8″?>
<ValueListConstraints
xmlns=”urn:oasis:names:tc:ubl:schema:Value-List-Constraints-0.8″
id=”urn:x-illustration”
name=”tipo-constraints”>

<Title>
Example of constraints about the food types – type-constraints.cva
</Title>

<Identification>
$Id: type-constraints.cva,v 0.1 2007/04/27 13:00:00 invinet.org $
</Identification>

<Description>
Example about the food
</Description>

<!–list all of the genericode expressions of agreed-upon code list
value enumerations–>
<ValueLists>
<ValueList xml:id=”type” uri=”type.gc”>
List the type of valids food
</ValueList>

<ValueList xml:id=”kind” uri=”kind.gc”>
List the kind of food valids
</ValueList>
</ValueLists>

<Contexts>
<Context item=”Type” values=”type”>
Limit the type of the foods
</Context>

<Context item=”@kind” values=”kind”>
Limit the type of the foods
</Context>
</Contexts>
</ValueListConstraints>

En primer lugar se definen los ficheros de genericode a usar, asignándoles un xml:id, y después se asocian al contexto correspondiente. Por ejemplo, la lista de códigos de type.gc se asocia al contenido del elemento Type, por lo tanto el valor del elemento Type debe ser uno de los códigos listados en el fichero Type.gc.  En el segundo caso, los valores del atributo kind debe ser uno de los valores del fichero kind.gc.

Ficheros GC

Los ficheros de genericode contienen las listas de códigos que se usarán para validar.

A continuación pegamos el ejemplo del fichero type.gc que se usaba en el fichero CVA anterior:

<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<!–
genericode to limit the possible values
of food types

$Id: type.gc,v 0.1 2007/04/27 13:00:00 invinet.org $
–>

<gc:CodeList xmlns:gc=”http://genericode.org/2006/ns/CodeList/0.4/”>
<Identification>
<ShortName>FoodTypes</ShortName>
<LongName>Types of valids food</LongName>
<Version>1</Version>
<CanonicalUri></CanonicalUri>
<CanonicalVersionUri></CanonicalVersionUri>
</Identification>
<ColumnSet>
<Column Id=”code” Use=”required”>
<ShortName>Code</ShortName>
<Data Type=”xsd:normalizedString”/>
</Column>
<Column Id=”name” Use=”optional”>
<ShortName>Name</ShortName>
<Data Type=”xsd:string”/>
</Column>
<Key Id=”codeKey”>
<ShortName>CodeKey</ShortName>
<ColumnRef Ref=”code”/>
</Key>
</ColumnSet>
<SimpleCodeList>
<Row>
<Value ColumnRef=”code”>
<SimpleValue>Fruit</SimpleValue>
</Value>
<Value ColumnRef=”name”>
<SimpleValue>Related to the fruits</SimpleValue>
</Value>
</Row>
<Row>
<Value ColumnRef=”code”>
<SimpleValue>Vegetable</SimpleValue>
</Value>
</Row>
</SimpleCodeList>
</gc:CodeList>

Este genericode vemos que sólo admite dos códigos válidos: ‘Fruit’ y ‘Vegetable’.

Las listas de códigos, y por tanto el contenido de los ficheros genericode, suele ser establecido por instituciones, como el UN/CEFACT, que estandarizan su contenido. Pero puede ser necesario hacer un fichero genericode con un subconjunto de los códigos del fichero original, para restringirse sólo a aquellos códigos válidos en el contexto indicado.

Adjuntamos este ejemplo. El ejemplo contiene los siguientes ficheros, en la carpeta scenario:

  • ficheros Genericode: type.gc, kind.gc.
  • fichero cva: type-constraints.cva.
  • fichero schematron: type-validate.sch, fichero cuyo contenido es trivial, pero que es necesario en el proceso de generar la xslt.
  • ficheros de ejemplo: ejemplo correcto (good1.xml) e incorrecto (bad1.xml).
  • fichero .bat: test-cva-1.bat.

Para probar el ejemplo, ejecutar el fichero test-cva-1.bat estando en la carpeta scenario. Llegará con tener instalado java en el sistema.

Y en este enlace se puede descargar la especificación de la metodología, que también contiene un ejemplo.

Postee su Comentario

Your email is never shared. Los campos marcados son requeridos *

*
*