2009-10-25 14 views
5

मैं एक ऐसी वेबसाइट बना रहा हूं जो xsl स्टाइलशीट का उपयोग करता है, और मैं एक उपयोगी स्टाइलशीट में उपयोगी कार्यों की एक छोटी लाइब्रेरी का निर्माण कर रहा हूं जो अन्य चादरें आयात करता हैxsl: आयात और xsl: स्टाइलशीट में शामिल करें Google क्रोम पर काम नहीं करते

<xsl:import href="util" /> 

प्रत्येक शीट के शीर्ष पर। यह Google क्रोम में काम नहीं करता है, क्योंकि यह xsl का समर्थन नहीं करता है: अभी तक आयात करें। क्या कोई मुझे एक स्टाइलशीट लिख सकता है जिसे मैं सर्वर पक्ष पर चला सकता हूं जो xsl को पढ़ेगा: आयात लाइन और क्लाइंट को भेजे जाने से पहले प्रासंगिक स्टाइलशीट आयात करें?

+0

मैं सर्वर पक्ष पर एक्सएमएल पार्स नहीं करना चाहता, मुझे एक एक्सएसएल दस्तावेज़ चाहिए जो अन्य एक्सएसएल दस्तावेज़ों पर लागू किया जा सकता है। प्रलेखन से मैंने पढ़ा है, मैं कुछ ऐसा दस्तावेज निकाल रहा हूं जो "दस्तावेज़()" फ़ंक्शन का उपयोग करता है। –

उत्तर

5

मैं निम्नलिखित की तरह कुछ करता हूं, जो स्टाइलशीट सर्वरसाइड को क्रोम में आने से पहले जोड़ देगा। पहला कदम जगह पर है क्योंकि xsl:import आयातित स्टाइलशीट के साथ सभी स्थानों को बदलने जैसा नहीं है।

  1. सभी xsl:importxsl:include के साथ बदलें
  2. उपयोग नीचे सर्वर साइड स्टाइलशीट से पहले एक में उन्हें एक करना (आयात प्राथमिकता तुम इतनी बजाय अपने कोड और उपयोग प्राथमिकताओं को बदलने की जरूरत हो सकती है, xsl:include पर लागू नहीं है)
  3. सेवा कुछ हफ्तों प्रतीक्षा करें (महीने हो सकते हैं)। मैंने क्रोम के लिए एक फिक्स बनाया है और वर्तमान में डेवलपर्स टीम के साथ काम करने में सुधार करने के लिए काम कर रहा हूं।
<xsl:template match="node()"> 
    <xsl:copy> 
     <xsl:copy-of select="@*"/> 
     <xsl:apply-templates select="node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="xsl:include"> 
    <!-- you'll probably want to be a bit more restrictive here --> 
    <xsl:copy-of select="document(@href)/xsl:stylesheet/*" /> 
</xsl:template> 

अद्यतन: बस एक ध्यान दें: Chrome बग सफारी में भी दिखाई देता है।

+0

धन्यवाद, बस मुझे जो चाहिए था। लंबी अवधि के फिक्स के बारे में भी सुनना अच्छा लगा! –

+0

आपका स्वागत है :) मैं स्टैक ओवरफ्लो को एसओ बग की रिपोर्ट करूंगा (यदि मैं उस कर्सीव टेक्स्ट को हटा देता हूं, तो कोड का पूरा ब्लॉक गायब हो जाता है ... विषम)। – Abel

+0

क्या क्रोम के लिए फिक्स के बारे में कोई खबर है? – Mikl

1

php में कुछ इस तरह का प्रयास करें:

<?php 
$sXml = "<xml>"; 
$sXml .= "<testtag>hello tester</testtag>"; 
$sXml .= "</xml>"; 

# LOAD XML FILE 
$XML = new DOMDocument(); 
$XML->loadXML($sXml); 

# START XSLT 
$xslt = new XSLTProcessor(); 
$XSL = new DOMDocument(); 
$XSL->load('xsl/index.xsl', LIBXML_NOCDATA); 
$xslt->importStylesheet($XSL); 
#PRINT 
print $xslt->transformToXML($XML); 
?> 

2

आप libxml2 और libxslt मॉड्यूल के साथ पायथन में कर सकता है ... नहीं करने के लिए आप के लिए अपने सभी काम है, लेकिन कुछ के साथ शुरू इस तरह:

import libxml2, libxslt 

styledoc = libxml2.parseFile("page.xsl") 
style = libxslt.parseStylesheetDoc(styledoc) 
doc = libxml2.parseFile("somefile.xml") 
result = style.applyStylesheet(doc, None) 

फिर बस चीज़ को वापस पूरा करें।

0

http://www.w3.org/TR/xslt#literal-result-element डुप्लिकेट-XSL-नाम स्थान इस मुद्दे को हल करने के लिए कैसे जब एक XSL स्टाइलशीट जो विस्तार <xsl:import> रों साथ एक XSL स्टाइलशीट में अपने मौजूदा XSL स्टाइलशीट बदल देती लेखन को दर्शाता है।

सावधान रहें, हालांकि, <xsl:import> और <xsl:include> के बीच के अंतर के बारे में सावधान रहें।

संबंधित मुद्दे