首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EXSLT str:替换

EXSLT str:替换
EN

Stack Overflow用户
提问于 2012-04-17 15:27:55
回答 1查看 964关注 0票数 0

让我的XML使用EXSLT :替换模板正确转换是有问题的。

以下是我的XML:

代码语言:javascript
复制
<XML>
<Item>
    <Field>
        <Name>ID</Name>
        <Value>98765</Value>
    </Field>
    <Field>
        <Name>ParentID</Name>
        <Value>10002</Value>
    </Field>
    <Field>
        <Name>Type</Name>
        <Value>content</Value>
    </Field>
    <Field>
        <Name>Name</Name>
        <Value>TestAPI Course</Value>
    </Field>
    <Field>
        <Name>URL</Name>
        <Value></Value>
    </Field>
    <Field>
        <Name>Description</Name>
        <Value>a description</Value>
    </Field>
    <Field>
        <Name>DateBegin</Name>
        <Value>2012-04-04T00:00:00.000-07:00</Value>
    </Field>
    <Field>
        <Name>DateEnd</Name>
        <Value>2012-04-04T00:00:00.000-08:00</Value>
    </Field>
    <Field>
        <Name>DateCreated</Name>
        <Value>2012-04-03T00:00:00.000-07:00</Value>
    </Field>
    <Field>
        <Name>DateModified</Name>
        <Value>2012-04-04T00:00:00.000-06:00</Value>
    </Field>
</Item>

这是我的XSL:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-16"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:str="http://exslt.org/strings" extension-element-prefixes="str" version="1.0">
        <xsl:import href="C:\inetpub\wwwroot\LMSConnector\LMS\XSL\str.xsl"/>
        <xsl:template match="/Items">
            <xsl:call-template name="str:replace">
                <xsl:with-param name="string" select="Field/Name"/>
                <xsl:with-param name="search" select="ID"/>
                <xsl:with-param name="replace" select="sco-id"/>
            </xsl:call-template>
        </xsl:template>
    </xsl:stylesheet>

我的问题是,我只是得到一个XML文档头,没有其他,但没有其他?我认为我离解决方案不远,问题可能在于我为模板上的"match“参数设置的值,以及调用模板中带有-param节点的选择参数。

任何帮助都将不胜感激。

麦克

EN

回答 1

Stack Overflow用户

发布于 2012-04-17 15:52:50

您正在尝试匹配<xsl:template match="/Items">,但是您的XML包含<Item>元素,而不是<Items>

编辑

这就是你想做的吗?

代码语言:javascript
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:str="http://exslt.org/strings" extension-element-prefixes="str">
    <xsl:import href="http://delicious-library-export.googlecode.com/svn/trunk/str/str.xsl"/>
    <xsl:output method="xml" encoding="utf-8" indent="no"/>

    <xsl:template match="/Item/Field/Name/text()">
        <xsl:call-template name="str:replace">
          <xsl:with-param name="string" select="."/>
          <xsl:with-param name="search" select="'ID'"/>
          <xsl:with-param name="replace" select="'sco-id'"/>
        </xsl:call-template>
    </xsl:template>

    <xsl:template match="*">      
      <xsl:copy>
        <xsl:apply-templates/>
      </xsl:copy>      
    </xsl:template>

    </xsl:stylesheet>

结果:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<Item>
    <Field>
        <Name>sco-id</Name>
        <Value>98765</Value>
    </Field>
    <Field>
        <Name>Parentsco-id</Name>
        <Value>10002</Value>
    </Field>
    <Field>
        <Name>Type</Name>
        <Value>content</Value>
    </Field>
    <Field>
        <Name>Name</Name>
        <Value>TestAPI Course</Value>
    </Field>
    <Field>
        <Name>URL</Name>
        <Value/>
    </Field>
    <Field>
        <Name>Description</Name>
        <Value>a description</Value>
    </Field>
    <Field>
        <Name>DateBegin</Name>
        <Value>2012-04-04T00:00:00.000-07:00</Value>
    </Field>
    <Field>
        <Name>DateEnd</Name>
        <Value>2012-04-04T00:00:00.000-08:00</Value>
    </Field>
    <Field>
        <Name>DateCreated</Name>
        <Value>2012-04-03T00:00:00.000-07:00</Value>
    </Field>
    <Field>
        <Name>DateModified</Name>
        <Value>2012-04-04T00:00:00.000-06:00</Value>
    </Field>
</Item>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10194173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档