XML - Problema con un schema

 
Vista:

Problema con un schema

Publicado por Víctor (3 intervenciones) el 02/03/2006 17:52:04
Hola.

Tengo definido el siguiente schema:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ll="http://localhost/pasaje" targetNamespace="http://localhost/pasaje" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="delegaciones">
<xs:complexType>
<xs:sequence>
<xs:element name="delegacion" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="oficina" type="ll:oficina" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="nombre" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:complexType name="oficina">
<xs:sequence>
<xs:element name="telefono" type="ll:tipo_telefono"/>
</xs:sequence>
</xs:complexType>

<xs:simpleType name="tipo_telefono">
<xs:restriction base="xs:string">
<xs:pattern value="([0-9]{9})*"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

El elemento "tipo_telefono" sólo puede ser un string de 9 dígitos.

El problema que tengo es cómo puede recuperar mediante javascript esta longitud (no me sirve utlizar el método .length de javascript).

Había pensado poner un atributo en el schema con esta información y así poder leeerlo, pero no se cómo definirlo.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Obtener longitud de tipo de dato definido en XSD usando JavaScript

Publicado por Alejandro (258 intervenciones) el 12/07/2023 23:24:14
Puedes utilizar JavaScript para leer la longitud definida en el tipo de dato "tipo_telefono" del esquema XSD. Aunque no puedes acceder directamente a la información del esquema XSD desde JavaScript, puedes obtenerla indirectamente mediante el uso de técnicas como la anotación o el uso de atributos personalizados en el XML.

Una forma de lograrlo es mediante la anotación del elemento "tipo_telefono" con un atributo personalizado que contenga la longitud deseada. Aquí hay un ejemplo de cómo podrías hacerlo:

1
2
3
4
5
6
7
8
9
10
<xs:simpleType name="tipo_telefono">
  <xs:annotation>
    <xs:appinfo>
      <length>9</length> <!-- Atributo personalizado para la longitud -->
    </xs:appinfo>
  </xs:annotation>
  <xs:restriction base="xs:string">
    <xs:pattern value="([0-9]{9})*"/>
  </xs:restriction>
</xs:simpleType>

Luego, en tu archivo XML, puedes acceder a este atributo personalizado utilizando JavaScript para obtener la longitud:

1
2
3
4
5
6
7
// Obtener el elemento "tipo_telefono" en el XML
var tipoTelefonoElement = document.getElementsByTagName("tipo_telefono")[0];
 
// Obtener la longitud del atributo personalizado "length"
var length = tipoTelefonoElement.getAttribute("length");
 
console.log("Longitud del tipo de teléfono:", length);

Recuerda que debes adaptar el código a tu estructura XML y a la forma en que estés utilizando el esquema XSD.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar