2011-12-20 12 views

Respuesta

6

-- no está permitido en los comentarios de XML. Puede agregar un espacio entre los dos -. Si desea hacer eso programáticamente, un XSLT puede hacer el trabajo por usted. Por ejemplo, el siguiente XSLT:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:template match="/"> 
     <a> 
      <xsl:comment select="'a -- b -- c'"/> 
     </a> 
    </xsl:template> 
</xsl:stylesheet> 

da el siguiente resultado:

<a><!--a - - b - - c--></a> 

pero el procesador XSLT puede también salida un error. Dada la especificación, depende de la implementación agregar un espacio o generar un error.

6

Usted no lo hace. XML según su specification no admite comentarios anidados.

2

Usted tiene dos opciones:

  1. eliminarlo, en lugar de comentando - siempre se puede volver después.
  2. Reemplace todas las instancias de -- con algo más primero.
2

Aquí hay otro enfoque: Se podía usar comentarios anidados como si estuviera apoyado en XML:

<!-- Outer comment 
    <SomeXML> ... </SomeXML> 
    <!-- Inner comment 
    <SomeXML> ... </SomeXML> 
    --> 
--> 

Entonces sólo utiliza este XML dentro de un editor de texto. El XML que realmente ingresas en un proceso es el resultado de un programa simple que escribes que lee el XML-comentario-anidado y escupe el comentario-comentario-XML.

Otro truco similar es utilizar un preprocesador de compilador de C. Lo hice hace años con el compilador C++ de Microsoft. El compilador, cl.exe, en realidad invocó dos programas separados, cl1.exe y cl2.exe. Cl1.exe es el preprocesador. De modo que podría alimentar cualquier cosa (XML, nmake scripts, lo que sea) y lo preprocesará. Así que algo como esto funcionaría: [? Comentarios anidados en XML]

<SomeXML> ... </SomeXML> 
#ifdef PRODUCE_THIS 
<SomeMoreXML> ... </SomeMoreXML> 
#endif 
Cuestiones relacionadas