出站的 XSLT 转换不起作用



我正在尝试为outout xml进行XSLT转换。我遵循了一个教程,但我不知道我做错了什么。

XML文件为:

<?xml version="1.0" encoding="UTF-8"?>
<PublishITEM xmlns="http://www.ibm.com/maximo" xmlns:xsi="http://www.w3.org/2001/XMLSchema- 
instance" creationDateTime="2020-02-25T11:12:05+01:00" transLanguage="EN" baseLanguage="EN" 
messageID="318921582625525794116" maximoVersion="7 6 20190514-1348 V7611-365" event="1">
<ITEMSet>
<ITEM action="Add">
<ATTACHONISSUE>0</ATTACHONISSUE>
</ITEM>
<ITEM action="Add">
<ATTACHONISSUE>1</ATTACHONISSUE>
</ITEM>
</ITEMSet>
</PublishITEM>

我所做的XSL转换是:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result- 
prefixes="mea" 
xmlns:mea="http://www.ibm.com/maximo">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml- 
declaration="yes"/> 
<xsl:template match="/">
<xsl:apply-templates select="mea:PublishITEM"/>
</xsl:template>
<xsl:template match="mea:PublishITEM">
<xsl:apply-templates select="mea:ITEMSet"/>
</xsl:template>
<xsl:template match="mea:ITEMSet">
<xsl:apply-templates select="mea:ITEM"/>
</xsl:template>
<xsl:template match="mea:ITEM">
<PARAM>
<xsl:apply-templates select="mea:ATTACHONISSUE"/>
</PARAM>
</xsl:template>
<xsl:template match="mea:ATTACHONISSUE">
<CD-NAME><xsl:value-of select="."/></CD-NAME>
</xsl:template>
</xsl:stylesheet>

我没有;I don’我不明白我做错了什么。我尝试过不同的在线网站来测试is。我收到的错误之一是:没有与此对象关联的样式表

忘了提一下我想要的结果是:

<PARAM>
<CD-NAME>0</CD-NAME>
</PARAM>
<PARAM>
<CD-NAME>1</CD-NAME>
</PARAM>

还有可能有一个if?例如如果outputput中的值为0,则为false,如果为1,则为true?我还添加了XSL和建议的更正

首先,删除中的尾随/字符

<xsl:apply-templates select="mea:PublishITEM/"/>

和:

<xsl:apply-templates select="mea:ITEMSet/"/>  

和:

<xsl:apply-templates select="mea:ITEM/"/>

接下来,您将希望从输出<PARAM>包装器的两个模板中的一个模板中删除该包装器。还需要向xsl:stylesheet元素添加一个exclude-result-prefixes="mea"属性。


当然,你可以把整个事情缩短为:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:mea="http://www.ibm.com/maximo"
exclude-result-prefixes="mea">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="yes"/> 
<xsl:template match="/mea:PublishITEM">
<PARAM>
<CD-NAME>
<xsl:value-of select="mea:ITEMSet/mea:ITEM/mea:ATTACHONISSUE"/>
</CD-NAME>
</PARAM>
</xsl:template>
</xsl:stylesheet>

(假设XML输入中始终只有一个ATTACHONISSUE元素(。

您有很多模板,只需使用默认模板即可省略:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:mea="http://www.ibm.com/maximo" exclude-result-prefixes="mea">
<xsl:strip-space elements="*"/>
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="yes"/> 
<xsl:template match="mea:ITEM">
<PARAM>
<xsl:apply-templates select="mea:ATTACHONISSUE"/>
</PARAM>
</xsl:template>
<xsl:template match="mea:ATTACHONISSUE">
<CD-NAME><xsl:value-of select="."/></CD-NAME>
</xsl:template>
</xsl:stylesheet>

https://xsltfiddle.liberty-development.net/pNmC4HW

相关内容

  • 没有找到相关文章

最新更新