2017-01-06 72 views
0

あなたは私を助けることができ、これはXSLTの私の最初の経験です:
私はdoctype-systemパラメータを渡す必要があります。切り替え

あなたは私のXSLTが正しいことを確認することはできますか?

<?xml version='1.0'?> 
<xsl:stylesheet version="1.0" xmlns:xsl="w3.org/1999/XSL/Transform"> 
    <xsl:output method='xml' indent='no' version='1.0' encoding='utf-8' doctype-public='xxx' doctype-system="{$pURL}" /> 
    <xsl:strip-space elements=""/> 
    <xsl:param name="pURL" select="'127.0.0.1:8080/dtd/?param'"/> 
    ; 
    <xsl:template match="/"> 
     <xsl:variable name="param"></xsl:variable> <xsl:apply-templates /> 
    </xsl:template> 

    <xsl:template match="@ | ">   
     <xsl:copy> 
      <xsl:apply-templates select="@ | node()"/> 
     </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 
+0

ようこそ。 [ツアー]をご覧ください。また、[What topics about about](http://stackoverflow.com/help/on-topic)、[ask]、[mcve]の作成方法を確認することもできます。試したコードと受け取ったエラーを投稿してください。できるだけ具体的にすることで、より良い回答につながります。 – happymacarts

+0

質問を更新して情報を追加してください。私たちがあなたの質問を理解して答えるのを簡単にしてください! – joepd

+0

あなたのコメントからあなたのXML/XSLTコードを組み込み、いくつかのタグを修正することで整形式にしました。 – zx485

答えて

1

あなたが本当にxsl:output要素のような属性をパラメータ化したい場合、あなたはサクソン9 PEまたはEEまたはExseltまたはAltovaの2017のようなXSLT 3.0プロセッサを使用する必要があり、そこにはstaticxsl:paramとAを使用することができますshadow attributeは、次のように:あなたは最初は通常のパラメータを受け取り、目的の属性を有する第2の生成2つのスタイルシートを作成する必要がありますXSLTの以前のバージョンとの

<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xsl:param name="doctype-uri" static="yes" as="xs:string" select="'http://example.com/foo.dtd'"/> 

    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" doctype-public="foo" _doctype-system="{$doctype-uri}"/> 

    <xsl:template match="/"> 
     <xsl:copy-of select="."/> 
    </xsl:template> 

</xsl:stylesheet> 

一般に、DTDのリクエストをローカルコピーにリダイレクトすることを目的としている場合は、各ドキュメントのDOCTYPEに変更を実装するのではなく、XMLカタログを調べる必要があります。