2013-04-17 2 views
2

XML을 다양한 형태의 XSL : FO로 변환하기위한 특성 세트를 많이 사용하는 제 3 자 XSLT와 협력하고 있습니다. 예 :해당 attr 집합을 재정의 할 때 XSLT 특성 집합에서 모든 특성을 제거하는 방법이 있습니까?

notes.xsl : 나는 맞는 볼

<xsl:template match="note"> 
    <fo:block xsl:use-attribute-sets="noteAttrs"> 
     <!-- This is a pretty big template with lots of xsl:choose/xsl:if/etc. --> 
    </fo:block> 
<xsl:template> 

<xsl:attribute-set name="noteAttrs"> 
    <xsl:attribute name="margin-left">10px</xsl:attribute> 
    <xsl:attribute name="margin-right">8px</xsl:attribute> 
    <xsl:attribute name="margin-top">5px</xsl:attribute> 
    <xsl:attribute name="font-size">10pt</xsl:attribute> 
    <!-- several other attributes --> 
</xsl:attribute> 

아이디어는 내가이 XSLT를 가져올 것입니다, 속성을 재정의하는 설정합니다. 나 : 난 그냥 .fo 주어진 문서에 대해 다른 글꼴 크기를 ... 필요하면

<xsl:import href="notes.xsl"/> 
<xsl:attribute-set name="noteAttrs"> 
    <xsl:attribute name="font-size">12pt</xsl:attribute> 
</xsl:attribute> 

문제는 가끔 (블록 즉, 내가 fo를 포함 상속) 평면 밖으로 제거 특성에 필요하다 주어진 fo 문서는 매우 다르기 때문에 notes.xsl에서 내 속성 세트를 병합하는 대신 새롭게 시작하는 것이 더 쉬울 것입니다. XSLT 2.0에서 전체 템플리트를 복제하여 fo : block에 다른 속성 세트를 지정하지 않고도 그렇게 할 수 있습니까?

<xsl:import href="notes.xsl"/> 
<xsl:attribute-set name="noteAttrs" merge_with_imported_attr_set="false"> 
    <xsl:attribute name="font-size">12pt</xsl:attribute> 
</xsl:attribute> 

내가 3.0 프로세서 즉시 XSLT로 전환 할 수 있지만 수 있습니다 3.0의 새로운 무언가가 있다면, 내가 그러고 싶어 : 나는 이런 식으로 뭔가를 할 수 있기를 찾고 있어요 생각 그것에 대해 알아.

감사합니다.

답변

4

속성 집합은 널리 사용되지 않으며 질문에 대답하기 위해 필자는 메모리를 새로 고침하기위한 사양을 살펴보아야했습니다. 나는 네가 원하는 것을 성취 할 방법이 없다고 생각한다. 가져 오기 스타일 시트에서 속성 세트를 실제로 오버라이드 할 수는 없지만이를 보완 할 수는 있습니다. 잘 설계된 XML 어휘에는 일반적으로 속성을 생략 할 수있는 것과 같은 속성 값이 있습니다. 그러나 그렇지 않은 경우에는 어쩔 수 없습니다.

+0

정보 주셔서 감사합니다! – user2292068