2014-01-21 42 views
1

我正在C#中使用Visual-studio 2012。 我想更新XSLT節點的值。使用C#代碼修改XSLT

這abc.xslt是這樣的:我已經寫修改這個XSLT在C#

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs"> 
    <xsl:output method="xml" encoding="UTF-8" indent="yes" /> 
    <xsl:template match="/"> 
    <DocumentElement> 
    <PositionMaster> 
     <Name> 
     <xsl:value-of select = "'Ryan'"/> 
     </Name> 
    </PositionMaster> 
    </DocumentElement> 

代碼是:

XmlDocument xslDoc = new XmlDocument(); 
xslDoc.Load(abc.xslt); 
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xslDoc.NameTable); 
nsMgr.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform"); 

我期待改變的名稱字段中的值大衛。我應該在這裏寫些什麼呢?

回答

0
XmlElement valueOf = xslDoc.SelectSingleNode("/xsl:stylesheet/xsl:template[@match = '/']/DocumentElement/PositionMaster/Name/xsl:value-of", nsMgr); 

if (valueOf != null) 
{ 
    valueOf.SetAttribute("select", "'David'"); 
    xslDoc.Save("new.xslt"); 
} 
else 
{ 
    // handle case here that element was not found 
} 
0

你似乎正在討論這個非常奇怪的方法。爲什麼不使用樣式表參數(全局xsl:param元素)?

如果你確實需要修改一個源代碼樣式表,就像你有時候做的那樣,爲了這個目的,使用XSLT更合理嗎?