2015-08-20 3 views
0

Я искал поисковые запросы в течение часа, и ни один из ответов, которые я нашел, не решил эту проблему.Как сопоставить шаблон с первым дочерним узлом корневого узла xslt

Вот отрывок из моего XML

<?xml version="1.0" encoding="UTF-8"?> 
<project> 
     <modelVersion>4.0.0</modelVersion> 

    <parent> 
     <groupId>foobar</groupId> 
     <artifactId>superpom</artifactId> 
     <version>0.1.0.5</version> 
    </parent> 

     <artifactId>common-parent</artifactId> 
     <version>0.2.0.4-SNAPSHOT</version> 
    <packaging>pom</packaging> 


    <properties> 
     <protostuff.version>1.0.7</protostuff.version> 
     <version>2.0.12.0</version> 
    </properties> 

То, что я хотел бы, чтобы заменить значение самого первого «версия» узла должно быть изменено на что-то другое.

<?xml version="1.0" encoding="UTF-8"?> 
<project> 
     <modelVersion>4.0.0</modelVersion> 

    <parent> 
     <groupId>foobar</groupId> 
     <artifactId>superpom</artifactId> 
     <version>0.1.0.5</version> 
    </parent> 

     <artifactId>common-parent</artifactId> 
     <version>THIS HAS CHANGED</version> 
    <packaging>pom</packaging> 


    <properties> 
     <protostuff.version>1.0.7</protostuff.version> 
     <version>2.0.12.0</version> 
    </properties> 

До сих пор это мой файл XSLT

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output omit-xml-declaration="yes" indent="yes"/> 

    <xsl:param name="pReplacement" select="'THIS HAS CHANGED'"/> 

    <xsl:template match="node()|@*"> 
     <xsl:copy> 
      <xsl:apply-templates select="node()|@*"/> 
     </xsl:copy> 
    </xsl:template> 
    <xsl:template match="//version[2]"> 
     <xsl:value-of select="$pReplacement"/> 
    </xsl:template> 
</xsl:stylesheet> 

Я играл со значением в «матче» и ничего не работал. Я пробовал «версию», «/ версию», «версию [2]». Ничего не сработало. Я не знаю, если это имеет значение, но я использую xsltproc на сервере red hat для запуска преобразования. Кто-нибудь может помочь?

ответ

1

Использование

<xsl:template match="/project/version[1]"> 
    <xsl:copy> 
    <xsl:value-of select="pReplacement"/> 
    </xsl:copy> 
</xsl:template> 
+0

Спасибо! Теперь я чувствую себя глупо. –

Смежные вопросы