XSLT转换-AIF Dynamics AX

时间:2015-07-21 00:58:32

标签: xml xslt xml-parsing axapta dynamics-ax-2012

我正在尝试将以下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}

为什么在转换过程中缺少所有标签?

1 个答案:

答案 0 :(得分:3)

  

为什么转换期间所有标签都丢失了?

因为您的模板与任何内容都不匹配。

<xsl:template match="InternalSO:AxdVendGroup">

它与任何东西都不匹配,因为:

  1. 您的XML中没有名为AxdVendGroup的元素;正确的名称是VendorGroup;
  2. 您已将InternalSO:前缀绑定到。{ "http://InternalVendGroup"命名空间;但是使用的命名空间 您的XML输入是"http://InternalVendorGroup"
  3. 尝试改为:

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

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