2017-04-21 19 views
0

如何將四個幾乎相同的模板合併爲一個?我想能夠有一個變量或至少一個地方,我可以指定一組父節點?使用某種選擇器或可能的變量將重複模板合併到單個模板中

我試圖像

<xsl:template match="ViewSuperbillProcedureScrubFullInsurance|ViewSuperbillScrubFullInsurance|ViewSuperbillProcedureScrub|ViewSuperbillScrub/column/@width[not(../@AutoWidth)]"> 

<xsl:template match="*[ViewSuperbillProcedureScrubFullInsurance|ViewSuperbillScrubFullInsurance|ViewSuperbillProcedureScrub|ViewSuperbillScrub]/column/@width[not(../@AutoWidth)]"> 

<xsl:varname name="NodeList">ViewSuperbillProcedureScrubFullInsurance|ViewSuperbillScrubFullInsurance|ViewSuperbillProcedureScrub|ViewSuperbillScrub</xsl:varname> 
<xsl:template match="$NodeList/column/@width[not(../@AutoWidth)]"> 

但沒有任何工程。

下面是完整的xsl:

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

<xsl:template match="ViewSuperbillProcedureScrubFullInsurance/column/@width[not(../@AutoWidth)]"> 
    <xsl:copy/> 
    <xsl:attribute name="AutoWidth">false</xsl:attribute> 
</xsl:template> 
<xsl:template match="ViewSuperbillScrubFullInsurance/column/@width[not(../@AutoWidth)]"> 
    <xsl:copy/> 
    <xsl:attribute name="AutoWidth">false</xsl:attribute> 
</xsl:template> 
<xsl:template match="ViewSuperbillProcedureScrub/column/@width[not(../@AutoWidth)]"> 
    <xsl:copy/> 
    <xsl:attribute name="AutoWidth">false</xsl:attribute> 
</xsl:template> 
<xsl:template match="ViewSuperbillScrub/column/@width[not(../@AutoWidth)]"> 
    <xsl:copy/> 
    <xsl:attribute name="AutoWidth">false</xsl:attribute> 
</xsl:template> 


</xsl:stylesheet> 

回答

0

可能做:

<xsl:template match="column[parent::ViewSuperbillScrub or parent::ViewSuperbillProcedureScrub or parent::ViewSuperbillScrubFullInsurance or parent::ViewSuperbillProcedureScrubFullInsurance]/@width[not(../@AutoWidth)]"> 
    <xsl:copy/> 
    <xsl:attribute name="AutoWidth">false</xsl:attribute> 
</xsl:template> 

但是,纔有意義,如果你的投入也有另一個columnwidth屬性,但一不同的親本:

//SomeOtherNode/column/@width 

那應該是不是被以同樣的方式處理。