/ / Как да изберете стойност на елемент от един XML и да генерирате нов XML с различно име на маркер, използвайки XSL? - xml, xslt

Как да изберете стойност на елемент от един XML и да генерирате нов XML с различно име на маркер, използвайки XSL? - xml, xslt

Ето моя вход XML:

<?xml version="1.0" encoding="utf-8"?>
<max:InvokePMR_SR_OS xmlns:max="http://www.ibbm.com/maximo"
creationDateTime="2008-09-28T21:49:45" baseLanguage="string" transLanguage="string"
messageID="string" maximoVersion="string">
<max:PMR_SR_OSSet>
<max:SR action="Delete" relationship="string" deleteForInsert="string" transLanguage="string">
<max:MAXINTERRORMSG>string</max:MAXINTERRORMSG>
<max:CLASS maxvalue="string" changed="true">string</max:CLASS>
<max:DESCRIPTION_LONGDESCRIPTION changed="true">string</max:DESCRIPTION_LONGDESCRIPTION>
<max:TICKETID changed="true">abc123def</max:TICKETID>
</max:SR>
</max:PMR_SR_OSSet>
</max:InvokePMR_SR_OS>

Искам да изберете стойността на TICKETID, която е abc123def и да генерира нов XML, както е показано по-долу Изходен XML:

<?xml version="1.0" encoding="utf-8"?>
<pmrtext>abc123def</pmrtext>

Моля, помогнете ми да получа валиден XSL файл, който ще конвертира моя вход XML в изход XML.

Отговори:

1 за отговор № 1

Тази трансформация трябва да работи:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:max="http://www.ibbm.com/maximo">
<xsl:output encoding="utf-8"/>
<xsl:template match="max:TICKETID">
<xsl:element name="pmrtext">
<xsl:value-of select="text()"/>
</xsl:element>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates select="//max:TICKETID"/>
</xsl:template>
</xsl:stylesheet>

0 за отговор № 2

Следната xsl ще ви изпълни задачата:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:max="http://www.ibbm.com/maximo" version="1.0">
<!-- declare your input xml"s namespace -->
<xsl:template match="/max:InvokePMR_SR_OS/max:PMR_SR_OSSet/max:SR">
<!-- xpath your way to your element -->
<xsl:element name="pmrtext"> <!-- your element name here -->
<xsl:value-of select="max:TICKETID"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>

Предполагам, че деликатната част ще декларира пространството от имена на вашия XML код. Освен това е доста прав.

Има много начини, по които можете да достигнете стойността на желания елемент чрез xpath, това е само едно.