मेरे XML को संसाधित करते समय, मैं एक एसवीजी फाइल को संदर्भित करने की कोशिश कर रहा हूं जो कि href
मेरे आउटपुट HTML में सीधे एक विशेषता से संदर्भित है जिसमें निम्न पंक्ति है:
<xsl:copy-of copy-namespaces="yes" select="document(@href)"/>
copy-namespaces
आवश्यक के बाद से डिफ़ॉल्ट मान "हाँ" वैसे भी है नहीं होना चाहिए, लेकिन मैं के बारे में है या नहीं, मैं यह कोशिश की है सवाल को रोकने के लिए जोड़ दिया है।
फ़ाइलों को HTML में कॉपी किया जाता है, लेकिन कोई भी नामांकित तत्व hosed हैं। उदाहरण के लिए, एक फाइल जो कॉपी होने से पहले इस तरह दिखती है:
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="translate(-519.21143,-667.79077)" id="layer1">
<image xlink:href="data:image/png;base64
इस तरह दिखता है:
<_0:RDF xmlns:_0="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<_0:Work xmlns:_0="http://creativecommons.org/ns#" about="">
<_0:format xmlns:_0="http://purl.org/dc/elements/1.1/">image/svg+xml</_0:format>
<_0:type xmlns:_0="http://purl.org/dc/elements/1.1/" resource="http://purl.org/dc/dcmitype/StillImage"/>
<_0:title xmlns:_0="http://purl.org/dc/elements/1.1/"/>
</_0:Work>
</_0:RDF>
</metadata>
<g id="layer1" transform="translate(-519.21143,-667.79077)">
<image href="data:image/png;base64
href
छवि तत्व के मूल्य पर लापता xlink नाम स्थान विशेष रूप से समस्याग्रस्त है।
बिना किसी व्याख्या के एसवीजी फ़ाइल में पढ़ने के लिए मैं इसे अलग तरीके से कैसे कर सकता हूं, इस पर कोई विचार?
मुझे एक समाधान मिला है कि "काम करता है", लेकिन यह एक हैक है और मैं कुछ और सुरुचिपूर्ण चाहूंगा:
<xsl:template name="topic-image-svg">
<!-- Generate tags to embed SWFs -->
<xsl:element name="div">
<xsl:if test="@width">
<xsl:attribute name="width">
<xsl:value-of select="@width"/>
</xsl:attribute>
</xsl:if>
<xsl:if test="@height">
<xsl:attribute name="height">
<xsl:value-of select="@height"/>
</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="document(@href)" mode="svg"/>
</xsl:element>
</xsl:template>
<xsl:template match="*" mode="svg">
<xsl:copy copy-namespaces="yes">
<xsl:for-each select="@*">
<xsl:choose>
<xsl:when test="self::node()[name() = 'xlink:href']">
<xsl:attribute name="xlink:href"><xsl:value-of select="."></xsl:value-of></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:copy></xsl:copy>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:apply-templates mode="svg"></xsl:apply-templates>
</xsl:copy>
</xsl:template>