如何将四个几乎相同的模板转换为一个?我希望能够有一个变量或至少一个我可以指定父节点组的地方吗?
我试过像
这样的东西<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 :(得分: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>
但是,只有当您的输入还包含另一个column
属性width
但父级不同时才有意义:
//SomeOtherNode/column/@width
应该以相同的方式处理不。