XSLT 转换-AIF Dynamics AX
XSLT transformation -AIF Dynamics AX
我正在尝试将以下 XML 转换为不同的 xml 格式。
我已经复制了用于转换的 XSLT 文件,但是我收到无效架构错误。
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="InternalVendGroup.xslt"?>
<ns0:VendorGroup xmlns:ns0="http://InternalVendorGroup">
<Header>
<Fld1>VendGroup1</Fld1>
<Fld2>VendGroup Description</Fld2>
<MessageId>{5FC77A8F-67D2-4BF1-A671-FF5A81EF0DDC}</MessageId>
</Header>
</ns0:VendorGroup>
XSLT 转换代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:InternalSO="http://InternalVendGroup">
<xsl:template match="InternalSO:AxdVendGroup">
<Envelope xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
<Header>
<MessageId>
<xsl:value-of select="Header/MessageId"/>
</MessageId>
<Action>http://schemas.microsoft.com/dynamics/2008/01/services/VendVendGroupService/create</Action>
</Header>
<Body>
<MessageParts>
<AxdVendGroup xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/VendGroup">
<VendGroup class="entity">
<VendGroup>
<xsl:value-of select="Header/Fld1"/>
</VendGroup>
<Name>
<xsl:value-of select="Header/Fld2" />
</Name>
</VendGroup>
</AxdVendGroup>
</MessageParts>
</Body>
</Envelope>
</xsl:template>
</xsl:stylesheet>
转换后我得到以下结果,这不是我想要的结果。
<?xml version="1.0" encoding="utf-8"?>
VendGroup1
VendGroup Description
{5FC77A8F-67D2-4BF1-A671-FF5A81EF0DDC}
为什么在转换过程中所有标签都丢失了??
Why all the tags are missing during the transformation??
因为您的模板不匹配任何内容。
<xsl:template match="InternalSO:AxdVendGroup">
它不匹配任何内容,因为:
- 您的 XML 中没有名为
AxdVendGroup
的元素;正确的名称是 VendorGroup
;
- 您已将
InternalSO:
前缀绑定到
"http://InternalVendGroup"
命名空间;但是使用的命名空间
您的 XML 输入是 "http://InternalVendorGroup"
.
试试看:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:InternalSO="http://InternalVendorGroup">
<xsl:template match="InternalSO:VendorGroup">
<!-- the rest of your template -->
</xsl:template>
</xsl:stylesheet>
警告:我没有检查过你模板的实际内容。
我正在尝试将以下 XML 转换为不同的 xml 格式。 我已经复制了用于转换的 XSLT 文件,但是我收到无效架构错误。
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="InternalVendGroup.xslt"?>
<ns0:VendorGroup xmlns:ns0="http://InternalVendorGroup">
<Header>
<Fld1>VendGroup1</Fld1>
<Fld2>VendGroup Description</Fld2>
<MessageId>{5FC77A8F-67D2-4BF1-A671-FF5A81EF0DDC}</MessageId>
</Header>
</ns0:VendorGroup>
XSLT 转换代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:InternalSO="http://InternalVendGroup">
<xsl:template match="InternalSO:AxdVendGroup">
<Envelope xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
<Header>
<MessageId>
<xsl:value-of select="Header/MessageId"/>
</MessageId>
<Action>http://schemas.microsoft.com/dynamics/2008/01/services/VendVendGroupService/create</Action>
</Header>
<Body>
<MessageParts>
<AxdVendGroup xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/VendGroup">
<VendGroup class="entity">
<VendGroup>
<xsl:value-of select="Header/Fld1"/>
</VendGroup>
<Name>
<xsl:value-of select="Header/Fld2" />
</Name>
</VendGroup>
</AxdVendGroup>
</MessageParts>
</Body>
</Envelope>
</xsl:template>
</xsl:stylesheet>
转换后我得到以下结果,这不是我想要的结果。
<?xml version="1.0" encoding="utf-8"?>
VendGroup1
VendGroup Description
{5FC77A8F-67D2-4BF1-A671-FF5A81EF0DDC}
为什么在转换过程中所有标签都丢失了??
Why all the tags are missing during the transformation??
因为您的模板不匹配任何内容。
<xsl:template match="InternalSO:AxdVendGroup">
它不匹配任何内容,因为:
- 您的 XML 中没有名为
AxdVendGroup
的元素;正确的名称是VendorGroup
; - 您已将
InternalSO:
前缀绑定到"http://InternalVendGroup"
命名空间;但是使用的命名空间 您的 XML 输入是"http://InternalVendorGroup"
.
试试看:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:InternalSO="http://InternalVendorGroup">
<xsl:template match="InternalSO:VendorGroup">
<!-- the rest of your template -->
</xsl:template>
</xsl:stylesheet>
警告:我没有检查过你模板的实际内容。