Coincidencia de expresión dentro de una sección de datos de un elemento XML utilizando XSL

StackOverflow https://stackoverflow.com/questions/2267796

Pregunta

Hola normalmente estoy programando en C ++ por lo XML / XSL / XPath no es mi punto fuerte, pero tengo que hacer una transformación y me parece que no puede encontrar una buena manera de hacerlo.

Tenemos un archivo XML que tiene el formato siguiente:

<outer>
  <element/>
  <other_element/>
  <message pri="info">
    [[!CDATA Error: something is not working]] 
  </message>
  <message pri="info">
    [[!CDATA Warning: warnings are boring]] 
  </message>
</outer>

Necesito un XSL que puede transformar esto a exactamente el mismo archivo XML, con la excepción, que coincide con el "error:" parte, y cambia el atributo PRI a un "error"

.

tengo que hacer esto con un transformaton XSL, y he empezado a buscar en XPath, pero tengo dificultades para encontrar cómo puedo lograr esto.

llegué tan lejos como emparejar los mensajes con un

<xsl:template match="message">
  <xsl:choice>
    <xsl:when test="tricky part">
    </xsl:when>
    <xsl:otherwise>
      <xsl:justcopythetag>
    </xsl:otherwise>
  </xsl:choice>
</xsl:template>

He descubierto cómo copiar las otras variables de aviso, pero no tengo ni idea de cómo hacer coincidir la parte de "error".

Puede alguien ayudarme?

¿Fue útil?

Solución

Usted está sólo en busca de la cadena "Error:" derecho

?
<xsl:when test="contains(text(),'Error:')">
</xsl:when>

El contains() devuelve verdadero si el primer parámetro contiene el segundo.

Otros consejos

...
<xsl:when test="contains(., 'Error')">
    <message pri="error"><xsl:value-of select="."/></message>
</xsl:when>
...otherwise
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top