एक्सएसएल कोड निम्नलिखित है

<xsl:template match="/">
  <xsl:for-each select="/t:Flow/t:AccountingRecords/t:AccountingRecord">
    <xsl:result-document method="xml" href="UBL-invoice.2.1-{t:Reference}-output.xml">
      <xsl:apply-templates select="."/>
    </xsl:result-document>
  </xsl:for-each>
</xsl:template>

मेरा कोड काफी नमूने से एक है

Processor proc = new Processor();
var comp = proc.NewXsltCompiler();
Xslt30Transformer exe = comp.Compile(new Uri("file:///" + System.IO.Path.GetFullPath("./Styles/style.xslt"))).Load30();

var baseOutUri = new System.Uri(Directory.GetCurrentDirectory());
exe.BaseOutputURI = baseOutUri.AbsoluteUri;
Console.WriteLine(exe.BaseOutputURI);

DocumentBuilder builder = proc.NewDocumentBuilder();
builder.BaseUri = new Uri("file:///" + System.IO.Path.GetFullPath("./ar2.xml"));

XdmNode inp = builder.Build(System.IO.File.OpenRead(System.IO.Path.GetFullPath("./ar2.xml")));

Serializer serializer = proc.NewSerializer();
serializer.SetOutputWriter(Console.Out);

// Transform the source XML and serialize the result document
exe.ApplyTemplates(inp, serializer); // < ==== Exception here

Console.WriteLine लिखते हैं:

फ़ाइल: /// डी: / देव / एसवीएन / सीसीएलबी / बास / बिन / डिबग से;

लेकिन आउटपुट इसमें उत्पन्न होते हैं:

डी:\dev\Svn\cclb\bas\bin . से

अगर मैं इसे ठीक करना चाहता हूं तो मुझे अपना कोड संशोधित करना होगा:

exe.BaseOutputURI = baseOutUri.AbsoluteUri + "/";

मैं सही हूँ या मुझे कुछ याद आ रहा है?

0
tschmit007 26 फरवरी 2019, 21:08

1 उत्तर

सबसे बढ़िया उत्तर

यूआरआई रिज़ॉल्यूशन इस तरह काम करता है। यदि आधार यूआरआई /a/b/c है, और सापेक्ष यूआरआई w.xml है, तो आधार यूआरआई के सापेक्ष सापेक्ष यूआरआई को हल करने का परिणाम /a/b/w.xml है। एक रिश्तेदार यूआरआई को हल करने के लिए एल्गोरिदम दो वर्ण तारों पर एक वाक्य रचनात्मक ऑपरेशन है, यह कभी भी काम करने का प्रयास नहीं करता है कि आधार यूआरआई /a/b/c एक निर्देशिका को संदर्भित करता है, एक साधारण फ़ाइल के लिए, या विशेष रूप से कुछ भी नहीं।

1
Michael Kay 26 फरवरी 2019, 19:57