XML、XSLT和JavaScript

XML、XSLT和JavaScript,javascript,xml,ajax,xslt,Javascript,Xml,Ajax,Xslt,我在弄清楚如何创建网站的“页面加载”架构时遇到了一些困难 其基本思想是,我将使用XSLT来表示它,但不是使用XSL标记的经典方式,而是使用JavaScript。因此,每个链接都应该引用一个JavaScript函数,该函数将更改页面的内容和菜单 我之所以想这样做,是因为我可以选择让JavaScript使用第一个初始XML文件中提供的数据动态显示每个页面,而不是对特定页面发出“完整”的服务器请求,这有太多的缺点 这方面的基本问题是,在搜索web以获得使用JavaScript访问文档“底层”XML的解

我在弄清楚如何创建网站的“页面加载”架构时遇到了一些困难

其基本思想是,我将使用XSLT来表示它,但不是使用XSL标记的经典方式,而是使用JavaScript。因此,每个链接都应该引用一个JavaScript函数,该函数将更改页面的内容和菜单

我之所以想这样做,是因为我可以选择让JavaScript使用第一个初始XML文件中提供的数据动态显示每个页面,而不是对特定页面发出“完整”的服务器请求,这有太多的缺点

这方面的基本问题是,在搜索web以获得使用JavaScript访问文档“底层”XML的解决方案之后,我只找到了访问外部XML文件的解决方案

当然,我可以将所有XML数据“打印”到文档头中完全声明的JavaScript数组中,但我相信这将是一个非常糟糕的解决方案。就这一点而言,它是丑陋的

因此,我的问题是:

  • 有可能做我想做的事吗 想什么
  • 拥有所有的搜索引擎优化是否友好 网站页面的内容已加载 最初在XML文件中
我的替代方案是使用AJAX按需动态加载特定页面的内容。然而,我发现很难找到一种对搜索引擎优化最不友好的方法。我无法想象搜索引擎会执行任何JavaScript

如果不清楚,我很抱歉,但这真的让我很害怕。
提前谢谢

有可能做到我想的吗

当然

将所有网站页面的内容最初加载到XML文件中是否有利于SEO

不,那完全是疯了

我无法想象搜索引擎会执行任何JavaScript

嗯,很好。对于可访问性来说,这也是非常糟糕的:非JS浏览器,或者JS实现略有不同的浏览器(例如新的保留字),这会导致您的脚本出现错误并发出隆隆声!没有页面。除非通过散列链接提供正确的导航,否则可用性也会很糟糕

页面内容创建中的所有JavaScript对于原始web应用程序(臭名昭著的GMail)都是有用的,但对于内容驱动的网站来说,这在很大程度上是灾难性的。实际上,您必须从客户端为JS浏览器构建相同的页面,从服务器端为所有其他代理构建相同的页面,此时您已经失去了在客户端完成所有工作的优势


这样做可能更好:主要基于HTML,但通过客户端渐进式增强,可以执行有用的任务,如检查服务器是否有更新,以及打印“此问题有新答案”公告。

也许以下场景适合您:

  • 浏览器请求您的xml文件

  • 加载后,将执行与xml文件关联的xslt。结果:初始html与脚本标记一起输出

  • 在javascript中,对当前位置进行ajax调用以获取“底层”XMLDOM。从那时起,javascript将管理所有xml处理

  • 您确保在步骤3中,不再从服务器加载xml,而是从浏览器缓存中获取xml


  • 就这样。

    你当然知道你的JavaScript;-)我以为是这样的。从我的观点来看,最终的结论必须是,通过加载特定页面的内容,页面请求的平滑度与SEO不兼容(也缺乏可访问性,但我不同意你的观点)。唯一困扰我的是,我如何使用JavaScript访问底层XML?不要像我之前提到的那样使用它,我要你。顺便说一句,感谢您的回复。这很简单:向服务器端脚本发出一个快速AJAX请求,返回特定功能所需的确切XML部分(可以是XML,或者现在更常见的是JSON,以减少编写客户端XML的烦人工作量).我不太清楚你说的“平滑”是什么意思。。。用户习惯于导航,就像在浏览器中一样,现代浏览器将“页面之间”的时间最小化,以使导航尽可能快。你这样胡闹,后果自负!例如,如果您有一个页面执行大量AJAX处理,而浏览器通常不显示正在进行导航,您可能会发现您的用户坐在那里反复单击链接并认为它不起作用。我不打算为某项功能获取XML/JSON,如实时新闻提要,但是要访问提供给我的XSLT“应用程序”的XML;-)。这是如何使用JavaScript获取这些数据,而不是通常的XSL,我不知道如何获取。平滑意味着,不是在用户与链接交互时重新加载整个页面,而是只重新加载页面中需要更改的部分,例如使用AJAX。这可能是一些菜单,按钮的文本应该改变,内容HTML可能都在同一个分区内。伴随着一些“加载…”-可能是图形;)