出站的 XSLT 转换不起作用
XSLT Transformation for outbound it's not working
我正在尝试对一次出局进行 XSLT 转换 xml。我已经按照教程进行操作,但我不知道自己做错了什么。
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>
我不明白我做错了什么。我试过不同的在线网站来测试是。我收到的错误之一是:没有与该对象关联的样式表
忘了说我要的结果是:
<PARAM>
<CD-NAME>0</CD-NAME>
</PARAM>
<PARAM>
<CD-NAME>1</CD-NAME>
</PARAM>
也可以有if吗?例如..如果输出中的值为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>
我正在尝试对一次出局进行 XSLT 转换 xml。我已经按照教程进行操作,但我不知道自己做错了什么。
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>
我不明白我做错了什么。我试过不同的在线网站来测试是。我收到的错误之一是:没有与该对象关联的样式表
忘了说我要的结果是:
<PARAM>
<CD-NAME>0</CD-NAME>
</PARAM>
<PARAM>
<CD-NAME>1</CD-NAME>
</PARAM>
也可以有if吗?例如..如果输出中的值为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>