如何从一个XML中选择元素值,并使用XSL生成具有不同标记名的新XML?

如何从一个XML中选择元素值,并使用XSL生成具有不同标记名的新XML?,xml,xslt,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">

以下是我的输入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>

一串
一串
一串
abc123def
我想选择TICKETID的值abc123def并生成一个新的XML,如下所示 输出XML:

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

abc123def

请帮助我获取一个有效的XSL文件,该文件将我的输入XML转换为输出XML。

此转换应能工作:

<?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>

以下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获得所需元素的值,这只是其中之一。

欢迎使用Stackoverflow。如果添加代码,请标记它并按
{}
按钮。