2016-03-17 3 views
-1

Я пытаюсь добавить новые поля со значениями в XSLT. Я нашел ссылку ниже полезной, но я мог бы добавить только одно поле и значение. Я хочу добавить к нему несколько полей и значений.XSLT: добавление новых тегов и значений для него

Для справки: XSLT: If tag exists, apply template; if not, choose static value

вход:

<root> 
    <item> 
     <country>Brobdingnag</country> 
     </item> 
    <item> 
     <test/> 
    </item> 
</root> 

XSLT:

 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org 1999/XSL/Transform"> 
     <xsl:template match="node()|@*"> 
      <xsl:copy> 
      <xsl:apply-templates select="node()|@*"/> 
      </xsl:copy> 
     </xsl:template> 
     <xsl:template match="item[not(country)]"> 
     <xsl:copy> 
      <xsl:apply-templates select="node()|@*"/> 
      <country>Lilliput</country> 
     </xsl:copy> 
     </xsl:template> 
    </xsl:stylesheet> 

Выход:

<root> 
    <item> 
     <country>Brobdingnag</country> 
    </item> 
    <item> 
     <test></test> 
     <country>Lilliput</country> 
    </item> 
</root> 

Точно так же мне нужно добавить несколько полей .. Любой Помогите будет оценена. Спасибо.

+0

Просьба предоставить более подробную информацию в отношении конкретной XML/XSL и выхода/ожидаемого результата. – Joshua

+0

Редактировали и снова дали ссылку для справки. Спасибо – CrazyJava

+0

Каков ваш ожидаемый результат, хотя на основе этого ввода? Я не уверен, что понимаю, что вы пытаетесь сделать на основе описания. – Joshua

ответ

1

Если я правильно понимаю задание, вам просто нужно дополнительное условное.

для ввода

<root> 
    <item> 
    <country>Brobdingnag</country> 
    <state>State of Fiction</state> 
    </item> 
    <item> 
    <test/> 
    </item> 
</root> 

XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="node()|@*"> 
     <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
     </xsl:copy> 
    </xsl:template> 
    <xsl:template match="item[not(country) and not(state)]"> 
     <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
     <country>Lilliput</country> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

выход

<root> 
    <item> 
    <country>Brobdingnag</country> 
    <state>State of Fiction</state> 
    </item> 
    <item> 
    <test></test> 
    <country>Lilliput</country> 
    </item> 
</root> 
+0

Я четко сказал в другом ответе. Спасибо за вашу помощь. Действительно ценю это. – CrazyJava

0

Он работает таким образом ..

для ввода:

<root> 
    <item> 
     <country>Brobdingnag</country> 
    </item> 
    <item> 
     <test/> 
    </item> 
</root> 

XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org 1999/XSL/Transform"> 
    <xsl:template match="node()|@*"> 
     <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
     </xsl:copy> 
    </xsl:template> 
    <xsl:template match="item[not(country) and not(State)]"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
     <country>Lilliput</country> 
     <state>State of Fiction</state> 
    </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

Выход:

<root> 
    <item> 
     <country>Brobdingnag</country> 
    </item> 
    <item> 
     <test></test> 
     <country>Lilliput</country> 
     <state>State of Fiction</state> 
    </item> 
</root> 
Смежные вопросы