2016-04-14 98 views
0

nedeniyle bir düğüm bulmayı başaramadı msbuild TransformXml aracılığıyla dönüştürülen özel bir yapılandırma dosyasına sahibim. Üst düğümün xlmns özniteliği var. Bunu kaldıramıyorum. kaynağındakiTransformXml, ad alanı

<TestSettings xmlns="http://example.com" type="mytype, mydll"> 
<Config> 
    <servers> 
     <main> 
     </main> 
    </servers> 
    <BusinessDayEnd>PT7H0M</BusinessDayEnd> 
    <Senders> 
     <Sender> 
      <CompanyId>CompanyID</CompanyId> 
      <Signature> My Company Service </Signature> 
     </Sender> 
    </Senders> 
</Config> 
Transformxml atar

"Hayır eleman:

<TestSettings xmlns="http://example.com" type="mytype, mydll" 
xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
<Config> 
    <servers> 
     <main> 
      <add Name="PROD" Description="Production Server" URL="http://myserver.example.com" 
       DefaultPort="" Environment="Production" xdt:Transform="Insert" xdt:Locator="Match(Name)"/> 
     </main> 
    </servers> 
    <BusinessDayStart xdt:Transform="InsertBefore(//BusinessDayEnd)">PT7H0M</BusinessDayStart> 
    <Senders> 
     <Sender > 
      <Email xdt:Transform="InsertAfter(//Sender[1]/Signature)" >[email protected]</Email> 
     </Sender> 
    </Senders> 
</Config> 
İşte

Kaynak dosyasının örneğidir: İşte TestSettings.Debug.config numunesidir belge eşleşir "

I upd ated iki dosya açık ad xmlns olması: yani hata "Ad alanı Yöneticisi veya XsltContext var

<kk:BusinessDayStart xdt:Transform="InsertBefore(//kk:BusinessDayEnd)">PT7H0M</kk:BusinessDayStart> 

: kk = "http://example.com" ve tüm düğümler ve XPath "kk" öneki edilecek gerekli. Bu sorgu önek, değişken veya kullanıcı tanımlı işlev" Ben 2010 yılında çözüldü ad ile bir hata olduğunu okumak

sahiptir. olursa olsun hiçbir şey yardımcı çalıştı neyi.

çözmek için yardım edin o.

+0

'// * [local-name() = 'BusinessDayEnd']' –

+0

Evet, çok teşekkür ederim. Ayrıca dizideki bir öğe için XPath (// * [local-name() = 'Gönderen'] [1] 'i kullandım. @ Joel, eğer cevabı gönderirsen çözülecek olarak işaretlerim –

cevap

3

Sen mesela, local-name() fonksiyonunu kullanarak varsayılan ad alanları atlayabilirsiniz,

//*[local-name()='BusinessDayEnd'] 

ve

//*[local-name()='Sender'][1]/*[local-name()='Signature']