具有名称空间的xslt转换中的属性

时间:2020-08-10 07:02:33

标签: xml xslt

我正在尝试在XML的根节点中转换Id属性,以使用XSLT将其插入Id节点中。每当我从XML中删除xmlns:xsi和xmlns标记时,它都可以毫无问题地获取ID,但是添加后便无法获取ID。

我尝试使用并使用,但是两者都没有工作。

要转换的XML:

<?xml version="1.0" encoding="UTF-8"?>
<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Id="ebee5c11-3060-475d-b3d9-e3db599da115" xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
</Test>

我的XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message"
                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                exclude-result-prefixes="msxsl"
                xmlns:user="urn:my-scripts"
                version="1.0">
    <msxsl:script language="C#"
                implements-prefix="user">
        <msxsl:assembly name="System" />
        <msxsl:using namespace="System" />
        <![CDATA[
     public string GuidNew()
     {
       return Guid.NewGuid().ToString("B");
     }
      ]]>
    </msxsl:script>
    <xsl:variable name="GUID" select="user:GuidNew()" />
    <xsl:template match="/">
      <Envelope>
            <Header>
                <MessageId>
            <xsl:value-of select="$GUID" />
                </MessageId>
          <Action>http://schemas.microsoft.com/dynamics/2008/01/services/TestService/create</Action>
            </Header>
            <Body>
                <MessageParts>
                    <Test xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/Test">
                    <!--Test-->
                        <Test class="entity">
                            <Id>
                  <xsl:value-of select="parent::node()/@Id" />
                            </Id>
                        </Test >
                    </Test>
                </MessageParts>
            </Body>
    </Envelope>
    </xsl:template>
</xsl:stylesheet>

0 个答案:

没有答案