我正在尝试在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>