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

它不匹配任何内容,因为:

  1. 您的 XML 中没有名为 AxdVendGroup 的元素;正确的名称是 VendorGroup;
  2. 您已将 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>

警告:我没有检查过你模板的实际内容。