Boite à Outils 3 : Avec transformation XSLT
Le patron NOM-ADJ
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="1.0">
<xsl:template match="/">
NOM ADJ
<xsl:apply-templates select="//article"></xsl:apply-templates>
</xsl:template>
<xsl:template match="//article">
<xsl:apply-templates select=".//element"/>
</xsl:template>
<xsl:template match="//element">
<xsl:choose>
<xsl:when test="(./data[contains(text(),'NOM')]) and (following-sibling::element[1][./data[contains(text(),'ADJ')]])">
<xsl:value-of select="./data[3]"/><xsl:text> </xsl:text>
</xsl:when>
<xsl:when test="(./data[contains(text(),'ADJ')]) and (preceding-sibling::element[1][./data[contains(text(),'NOM')]])">
<xsl:value-of select="./data[3]"/><xsl:text>
</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Le résultat
Le patron NOM-PREP-NOM
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="1.0">
<xsl:template match="/">
<xsl:apply-templates select="//article"></xsl:apply-templates>
</xsl:template>
<xsl:template match="//article">
<xsl:apply-templates select=".//element"/>
</xsl:template>
<xsl:template match="//element">
<xsl:choose>
<xsl:when test="(./data[contains(text(),'NOM')]) and (following-sibling::element[1][./data[contains(text(),'PRP')]]) and (following-sibling::element[2][./data[contains(text(),'NOM')]])">
<xsl:value-of select="./data[3]"/><xsl:text> </xsl:text>
</xsl:when>
<xsl:when test="(./data[contains(text(),'PRP')]) and (preceding-sibling::element[1][./data[contains(text(),'NOM')]]) and (following-sibling::element[1][./data[contains(text(),'NOM')]])">
<xsl:value-of select="./data[3]"/><xsl:text> </xsl:text>
</xsl:when>
<xsl:when test="(./data[contains(text(),'NOM')]) and (preceding-sibling::element[1][./data[contains(text(),'PRP')]]) and (preceding-sibling::element[2][./data[contains(text(),'NOM')]])">
<xsl:value-of select="./data[3]"/><xsl:text>
</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Le résultat