XSLT

2010-04-28 19 views
8

द्वारा जावा में 2 एक्सएमएल धाराओं विलय करने के लिए मैं कैसे, जावा में 2 एक्सएमएल धाराओं (तार) विलय करने के लिए जरूरी XSLT (है कि मैं परिवर्तन को बदल सकता है) द्वारा चाहते हैं, लेकिन समस्या यह है कि XMLs एक के रूप में आ रहा है स्ट्रिंग। कई उदाहरण हैं, लेकिन फाइलों के माध्यम से। क्या यह उन्हें फ़ाइलों में सहेजे बिना किया जा सकता है?XSLT

धन्यवाद।

उत्तर

5

मैं केवल एक तरह से URIResolver के स्वयं के कार्यान्वयन का उपयोग के बारे में पता:

आप XML कि स्ट्रिंग प्रारूप में में आता है बदलना चाहते हैं, की तरह कुछ का उपयोग करें।

public final class StringURIResolver implements URIResolver { 
    Map<String, String> documents = new HashMap<String, String>(); 

    public StringURIResolver put(final String href, final String document) { 
     documents.put(href, document); 
     return this; 
    } 

    public Source resolve(final String href, final String base) 
    throws TransformerException { 
     final String s = documents.get(href); 
     if (s != null) { 
      return new StreamSource(new StringReader(s)); 
     } 
     return null; 
    } 
} 

इस तरह यह प्रयोग करें:

final String document1 = ... 
final String document2 = ... 
final Templates template = ... 
final Transformer transformer = template.newTransformer(); 
transformer.setURIResolver(new StringURIResolver().put("document2", document2)); 
final StringWriter out = new StringWriter(); 
transformer.transform(new StreamSource(new StringReader(document1)), 
    new StreamResult(out)); 

और से बदलते हैं, इस तरह इसे संदर्भ:

<xsl:variable name="document2" select="document('document2')" /> 
+0

हां !!! यह काम करता हैं!!! आपका बहुत बहुत धन्यवाद!!! :)) – user327933

+0

+1 मैंने देखा है इसका मुट्ठी उपयोग। मैंने

0

this tutorial पर एक नज़र डालें, यह सब आप (उदाहरण के साथ) की जरूरत है।

Templates template = ...; 
String xml = ...; 
Transformer transformer = template.newTransformer(); 
Writer out = new StringWriter(); 
transformer.transform(new StreamSource(new StringReader(xml)), new StreamResult(out)); 
+2

यह कैसे एक स्ट्रिंग से इनपुट दस्तावेज़ प्राप्त करने का जवाब है। लेकिन सवाल यह है कि दो दस्तावेजों को कैसे विलय करना है। दस्तावेज़ों में से एक को स्वयं ट्रांसफॉर्म (जैसे ट्यूटोरियल के तीसरे उदाहरण में) द्वारा पढ़ा जाना चाहिए, या पैरामीटर के रूप में दिया जाना चाहिए। –