0

我在地图上创建了许多 functoid 来验证默认值的源节点“AdoptedDate”(将默认值等于逻辑或通过具有新默认值的值 functoid。然后如果两个等于都不是,则逻辑不将源节点“AdoptedDate”映射到目标模式(包含 xslt)是不正确的。

我想做的是为源模式中的所有日期字段实现这个,这可以做到吗?

当前生成的 XSLT(仅采用)

 <xsl:for-each select="Form/SDetails">
<xsl:variable name="var:v17" select="userCSharp:LogicalEq(string(NameDetails/AdoptedDate/text()) , &quot;1900-09-09&quot;)" />
<xsl:variable name="var:v18" select="string(NameDetails/AdoptedDate/text())" />
<xsl:variable name="var:v19" select="userCSharp:LogicalEq($var:v18 , &quot;1800-09-09&quot;)" />
<xsl:variable name="var:v20" select="userCSharp:LogicalOr(string($var:v17) , string($var:v19))" />
<xsl:variable name="var:v22" select="userCSharp:LogicalNot(string($var:v20))" />
    <xsl:if test="string($var:v20)='true'">
        <xsl:variable name="var:v21" select="&quot;1901-01-01&quot;" />
        <p:AdoptedDate>
              <xsl:value-of select="$var:v21" />
        </p:AdoptedDate>
    </xsl:if>
    <xsl:if test="string($var:v22)='true'">
        <xsl:variable name="var:v23" select="NameDetails/AdoptedDate/text()" />
        <p:AdoptedDate>
            <xsl:value-of select="$var:v23" />
        </p:AdoptedDate>
    </xsl:if>

4

1 回答 1

1

你的选择是

  1. 在每个字段上使用相同的 functoids 集(这是我认为你试图避免的)
  2. 创建一个外部类实现您可以从 Scripting functoid 调用的逻辑。
  3. 创建一个内联脚本来执行逻辑。然后,您可以拥有包含相同函数名称和参数的后续脚本 fuctoid,并且在它们都调用的 XSLT 中只有一个脚本。

在所有情况下,您都必须将 functoid 链接到源字段和目标字段。

于 2014-05-25T23:05:38.183 回答