Xml activo conjunto de datos, acceso a líneas específicas

  • maguskrool
  • Born
  • Born
  • No Avatar
  • Registrado: May 29, 2008
  • Mensajes: 3
  • Status: Offline

Nota Septiembre 24th, 2008, 5:24 pm

Hola. Ive estado tratando de construir un sitio web usando XML Spry conjuntos de datos, y mientras Ive logrado mis objetivos por ahora, no creo que la solución se me ocurrió es la mejor.

El sitio web consta de varias áreas que los proyectos de demostración. Cada proyecto tiene varios campos que deben llenarse con contenido encontrado en los archivos XML, pero los proyectos no son exactamente iguales y algunos tienen campos específicos que otros no lo requieren.

Toda la información está disponible en varios idiomas, así que por ahora Ive creó un archivo XML para cada uno. Heres lo que un archivo XML podría ser como:
Código: [ Select ]
 
projects.xml:
<project_list>
   <project name="proj1">
      <title>project one</title>
      <date>2008</date>
      <slogan>project one is great</slogan>
   </project>
   <project name="proj2">
      <title>project two</title>
      <date>2008</date>
      <team>team alpha</team>
      <description>it was something we did</description>
   </project>
</project_list>
 
  1.  
  2. projects.xml:
  3. <project_list>
  4.    <project name="proj1">
  5.       <title>project one</title>
  6.       <date>2008</date>
  7.       <slogan>project one is great</slogan>
  8.    </project>
  9.    <project name="proj2">
  10.       <title>project two</title>
  11.       <date>2008</date>
  12.       <team>team alpha</team>
  13.       <description>it was something we did</description>
  14.    </project>
  15. </project_list>
  16.  


Este conjunto de datos, por motivos de simplificación, no depende de la lengua:
Código: [ Select ]
 
var dsProjects = new Spry.Data.XMLDataSet("projects.xml", "project_list/project");
 
  1.  
  2. var dsProjects = new Spry.Data.XMLDataSet("projects.xml", "project_list/project");
  3.  


Y luego están las áreas de contenido:
Código: [ Select ]
 
<div id="proj1">
   <p>title goes here</p>
   <div id="gallery">
      (...gallery)
   </div>
   <p>date goes here</p>
   <div id="pub">
      (...banner)
      <p>slogan goes here</p>
   </div>
</div>
<div id="proj2">
   <p>title goes here / date goes here</p>
   <div id="team stuff">
      <p>team goes here</p>
      <div>
         <p>description goes here</p>
      </div>
   </div>
</div>
 
  1.  
  2. <div id="proj1">
  3.    <p>title goes here</p>
  4.    <div id="gallery">
  5.       (...gallery)
  6.    </div>
  7.    <p>date goes here</p>
  8.    <div id="pub">
  9.       (...banner)
  10.       <p>slogan goes here</p>
  11.    </div>
  12. </div>
  13. <div id="proj2">
  14.    <p>title goes here / date goes here</p>
  15.    <div id="team stuff">
  16.       <p>team goes here</p>
  17.       <div>
  18.          <p>description goes here</p>
  19.       </div>
  20.    </div>
  21. </div>
  22.  


Así como usted ve, cada proyecto tiene su propia estructura. Esto hace que el uso de Spry: repetir un método no muy eficaz para rellenar todo el contenido. Lo ideal debería ser capaz de tener acceso a cada fila en el conjunto de datos a través de algún tipo de valor, como la ID, o uno de sus valores para niños. La ds_RowID depende de la orden de registro, por lo menos theres otra forma de usarlo, no resuelve mi problema.

Heres lo que Ive viene con:
Código: [ Select ]
 
<div id="proj1" spry:region="dsProjects" spry:repeat="dsProjects">
   <p spry:if="'{@id}'=='proj1'">{title}</p>
   (same method for each other element I need to retrieve from the xml dataset)
</div>
 
  1.  
  2. <div id="proj1" spry:region="dsProjects" spry:repeat="dsProjects">
  3.    <p spry:if="'{@id}'=='proj1'">{title}</p>
  4.    (same method for each other element I need to retrieve from the xml dataset)
  5. </div>
  6.  

Esto funciona (en FF3 OSX, por lo menos), aunque hay algunos otros problemas que podrían hacer necesario para crear un ágil: región (o al menos ágil uso: la repetición) para cada campo. De todos modos, suena tonto e inútil que pasar por cada fila de la cada vez conjunto de datos para cada uno de los campos que deben llenarse.

Mi esperanza es que soy ignorante de algún método mucho mejor de lograr mis metas, algo más directo y elegante.

¿Puede alguien ayudarme con esto? Muchas gracias de antemano.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Septiembre 24th, 2008, 5:24 pm

Publicar Información

  • Total de mensajes en este tema: 1 mensaje
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 100 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC