英文:
XSLT to remove soap envelope and soap namespaces and process the soap body
问题
你需要将输入中的SOAP信封和SOAP命名空间移除,然后将其作为XML传递给后端。你期望的输出如下:
<Data>
<DATE>string</DATE>
<STATUS>string</STATUS>
<CODE>string</CODE>
</Data>
你正在使用以下代码:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output version="1.0" indent="yes" encoding="UTF-8" method="xml"/>
<xsl:template match="comment()">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:for-each select="@*">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="/Body"/>
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
但你得到的输出如下:
<?xml version="1.0" encoding="UTF-8"?>
<Envelope>
<Body>
<Data>
<DATE>string</IDATE>
<STATUS>string</STATUS>
<CODE>string</CODE>
</Data>
</Body>
</Envelope>
如果你需要帮助来纠正代码以获得期望的输出,请提出具体的问题,我将尽力帮助你。
英文:
I need to remove the soap envelope and soap namespace from the input and pass it to the backend as xml
For e.g:
My input is
<xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://www.w3.org/2003/05/soapenvelope" xmlns:tem="http://tempuri.org/">
<soap:Body>
<tem:Data xmlns="http://tempuri.org/">
<tem:DATE>string</tem:DATE>
<tem:STATUS>string</tem:STATUS>
<tem:CODE>string</tem:CODE>
</tem:Data>
</soap:Body>
</soap:Envelope>
my expected output is:
<Data>
<DATE>string</DATE>
<STATUS>string</STATUS>
<CODE>string</CODE>
</Data>
iam using the below code:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output version="1.0" indent="yes" encoding="UTF-8" method="xml"/>
<xsl:template match="comment()">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:for-each select="@*">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="/Body"/>
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
but iam getting the below output:
<?xml version="1.0" encoding="UTF-8"?>
<Envelope>
<Body>
<Data>
<DATE>string</IDATE>
<STATUS>string</STATUS>
<CODE>string</CODE>
</Data>
</Body>
</Envelope>
答案1
得分: 1
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="/*"/>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
xsl:apply-templates/
</xsl:element>
</xsl:template>
</xsl:stylesheet>
英文:
I think it would be sufficient to do:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="/*">
<xsl:apply-templates select="*/*"/>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论