Cátedra: Ing. Saubidet
Fecha: 3ra fecha - (Segundo Cuatrimestre) 2008
Día: 12/02/09
Sea el siguiente archivo XML:
<sumatoria> <variable from="0" to="25">i</variable> <formula>i*(i+1)</formula> </sumatoria>
Donde se quiere validar: Variable debe ser una única letra. Variable y fórmula pueden aparecer en orden indistinto. “from” debe ser un número entero al igual que “to”. Fórmula es una expresión matemática.
Realizar el DTD y un XML Schema que permitan validar de la mejor forma posible el vocabulario planteado (25 puntos).
En un file system en el cual el tamaño del bloque es fijo, qué soluciones pueden implementarse para solucionar el problema de la fragmentación al almacenar archivos chicos sin perjudicar la forma en que se leen los archivos grandes. (25 puntos).
Descomprimir el archivo cuyo contenido representa al número 0.1458 utilizando un compresor aritmético dinámico de orden 1, considerando como únicos caracteres posibles a A, B, C y EOF, y teniendo en cuenta que el compresor asigna rangos a los caracteres ordenando de menor a mayor (el EOF es el último) (25 puntos).
Proponga todos los cambios necesarios que deberían hacerse tanto en la estructura física del archivo como en las primitivas de forma tal de soportar registros de longitud variable en la organización relativa. Se evalua la calidad de la solución presentada (25 puntos).
DTD:
<!DOCTYPE sumatoria [ <!ELEMENT sumatoria ((variable,formula)|(formula,variable))> <!ELEMENT variable (#PCDATA)> <!ATTLIST variable from CDATA #REQUIRED> <!ATTLIST variable to CDATA #REQUIRED> <!ELEMENT formula (#PCDATA)> ]>
XML SCHEMA:
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="sumatoria"> <xsd:complexType> <xsd:all> <xsd:element name="variable" type="VARIABLE_TYPE"/> <xsd:element name="formula" type="xsd:string"/> </xsd:all> </xsd:complexType> </xsd:element> <xsd:complexType name="VARIABLE_TYPE"> <xsd:simpleContent> <xsd:extension base="LETTER"> <xsd:attribute name="from" type="xsd:integer" use="required"/> <xsd:attribute name="to" type="xsd:integer" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:simpleType name="LETTER"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[a-zA-Z]"/> </xsd:restriction> </xsd:simpleType> </xsd:schema>
Una muy buena explicación se puede ver en este apunte: Registros de longitud variable