2010-12-20 12 views
1

私は恐れることはありませんが、どこにも見つからず、どちらも不可能と言われています。XIncludeタグでワイルドカードを使用することはできますか?

私は、ワイルドカードを使用してXMLドキュメント内に一連のファイルを含めたいと考えています。このように:

<?xml version="1.0" encoding="utf-8"?> 
<mydocument> 
    <!-- ... --> 
    <xi:include href="*include.xml"/> 
</mydocument> 

私はそれがうまくいかないことは知っていますが、私はそれが私の意図をはっきりと表していると思います。これを達成する方法はありますか?

編集:

私はxpointer属性を使用しようとしましたが、それを動作させることができませんでした。

答えて

3

XIncludeタグでワイルドカードを使用することはできますか?

No. hrefは、URIを表し、これらにはワイルドカードの概念はありません。

それ以外の場合は、href="http://www.google.com/*"などと言ってGoogleホームページを映し出すことができます。

ヒント:ファイルシステムにはワイルドカードの概念もありません。 シェルする。パスを解析して*を参照すると、彼らはあなたのために空白を埋めるために重い持ち上げを行います。基本となるファイルシステムには、アスタリスクは表示されません。

0

@Tomalekはこちらです。あなたがしようとしていることをする方法がありますが、XIncludeは正しい答えではありません。ワイルドカードの拡張を処理できるツールが必要です。

Norm WalshのXProc implementation - calabashのようなものでほぼ確実にこれを行うことができますが、何らかの方法でXIncludeに相当するものをロールする必要があります。

1

quickオプション

ワイルドカード対応リゾルバを作成するためにオーバーライドXmlResolverのがあります:

class WildCardResolver : XmlUrlResolver 
{ 
    public override Uri ResolveUri(Uri baseUri, string relativeUri) 
    { 
     try 
     { 
      DirectoryInfo di = new DirectoryInfo(baseUri.AbsolutePath); // TODO Check it is valid. 
      string combinedFilePath = Path.GetTempFileName(); 
      using (FileStream combinedStream = new FileStream(combinedFilePath, FileMode.OpenOrCreate)) 
      { 
       foreach (FileInfo fi in di.GetFiles(relativeUri)) 
       { 
        using (FileStream fileStream = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read)) 
        { 
         fileStream.CopyTo(combinedStream); 
        } 
       } 
      } 
      Uri absUri = new Uri(combinedFilePath); 
      return absUri; 
     } 
     catch(Exception ex) 
     { 
      //Log Exception 
      return base.ResolveUri(baseUri, relativeUri); 
     } 
    } 
} 

ワイルドカードはまた、すべての

で適用された場合に気づくためにやるべきことがたくさんがありますが、 BaseURIは、ソースXMLが

ファイル:// c:/myXMLRepository/myXML.xmlから

* inc.xml

を含み、今ベースURIは、ファイル// Cです:/temp/tmpA0.tmp

public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn) 

を上書きする別の方法をtheresのが、そのによって課される他の問題がある...絶対URIではない、常になりますので:

は、あなたに

EDITを最高の幸運を祈って有効であり、XIncludingReaderはそれを試して検証します。

関連する問題