0

我正在尝试为公司中的所有应用程序生成一个通用的支持/帮助页面。要求如下:

  • 每个应用程序都有一个关于应用程序支持/安装/常见问题等的 XML 页面(将具有预定义的结构)。
  • 基于这个 xml 页面,我们需要创建 html 页面(通过 XSLT)并使用一些更好的引导程序(AdminLTE 等)库(以获得更好的外观和感觉)
  • 主页将从不同的 XML 生成,该 XML 将具有指向 XML 的链接和路径。

Links.xml 如下:

<Links>
  <link>
    <url>Application 1</url>
    <FilePath>/Files/App1.xml</FilePath>
  </ link >
  <link>
    <url>Application 2</url>
    <FilePath>/Files/App2.xml</FilePath>
  </link >
  <link>
    <url>Application 3</url>
    <FilePath>/Files/App3.xml</FilePath>
  </link >
</Links>

然后应用 XML 文件如下:App.xml

<Contents>
  <Header> Help Path for Application 1</Header>
  <Summary> This application is used to raise new requests to create User ID’s. It has workflow attached to it which can be used ?????. 
</Summary>
  <Support>
    <Email>abc@gmail.com </Email>
    <Phone> +1 82828 29282 2727 </Phone>
    <Text> Please contact ??? in department </Text>
  </Support>
  <FAQS>
    <FAQ>
      <QUESTION> For installation what I should Do</ QUESTION >
      <ANSWER> Click on this link. And download the installer. Please note that you need Admin rights for it. /ANSWER>
        <ANSWER> If you are on company network then it can be installed through My Portal </ANSWER>
      </FAQ>
      <FAQ>
        <QUESTION> Question 2</ QUESTION >
        <ANSWER> Answer 1 /ANSWER>
          <ANSWER> Answer 2 </ANSWER>
          <ANSWER> Answer 3 </ANSWER
</FAQ>
        </FAQS>
      </Contents>

最后我们需要在 HTML 中输出如下(仅示例)

在此处输入图像描述

想法是保持它的灵活性,以便每当需要添加新应用程序时,都可以通过在 Links.xml 中创建条目并创建相应的 XML 文件来添加它。

  1. 我可以为此使用 ASP.NET Web 表单或 MVC。
  2. 或简单的静态 html 页面。虽然我更喜欢 MVC

知道我应该如何追求这个吗?一些关于这方面的例子将是可观的。

干杯。

4

2 回答 2

0

是的,我有一个解决方案,它叫做 ProjFlx,开源项目托管在 GitHub 上: https ://github.com/Xportability/ProjFlx

ProjFlx 的使用几乎符合您对 T 的要求,但您的结构除外,尽管此 Web 框架非常灵活,您可以轻松地将其合并到您的框架中。否则,整个应用程序导航由每个文件夹中的公共目录结构和公共 Xml 文档驱动。此 Xml 中的内容被写入页面。在此页面 Xml 中,您将在 .. 结构中找到子页面部分。

ProjFlx 已在多个网站上使用,包括:metescoresonline.com、riocrest.com、xportability.com、cloudformatter.com 等。

一个例子说明了一切。我从网站 meetcoresonline.com/help 中包含了指向此 Xml 文档的链接

[此页面的 XML] http://www2.meetscoresonline.com/Resources/projectFlx/Help/help.xml

[此页面的 Xsl] http://www2.meetscoresonline.com/Resources/projectFlx/Help/help.xml

[更极端的 Xslt 示例] http://www2.meetscoresonline.com/Resources/projectFlx/Register/Register.xsl

ProjFlx 内容可以分发到您的 CDN,因此您可以完全分离 Web 内容和二进制文件。

ProjFlx 是一个开源项目,以及它的 .Net src。

ProjFlx 代码是用 C# 编写的。Projflx 核心公开了 3 层,TMPLT / SITE / PAGE。每个都有一个 INIT / MAIN / TERMINATE。TMPLT MAIN 调用 SITE INIT 然后 SITE MAIN 然后 SITE TERMINATE 和 SITE MAIN 调用 PAGE INIT / PAGE MAIN / PAGE TERMINATE。在您的代码中,(通常)您覆盖每个虚拟 SITE 方法,然后根据页面请求为页面编写必要的业务逻辑。

ProjFlx 不是 MVC,ProjFlx 也不是 Windows 窗体,它是它自己的 Web 框架,在后端使用 C# .NET,Xml/Xslt 使用内置的 Twitter Bootstrap 生成 HTML。ProjFlx 包括它自己的自定义数据层,内置 XmlWriter 操作生成“好”的 Xml(不是您从中获得的 Xml 和 ADO.Net 记录集)。这个数据类甚至会从你的数据库中的一个字段“分解 json”到 Xml。假设您有一些字段,其内容是:

{ "ProjFlx": { "Version":"1.0", "License":"Open" }}

在生成的 Xml 中分解为:

<ProjFlx>
   <Version>1.0</Version>
   <License>Open</License>
</ProjFlx>

我希望你看看!

于 2015-12-17T05:27:43.263 回答
0

这是一个纯粹使用 XSLT 的解决方案。

主页将是...

<html>
<head>
  <title>ACME Corporation Support Page</title>
  <link href="support.css" rel=stylesheet type="text/css"> 
  <!-- Use support.css to style the page, as you please. --> 

  <script type="text/javascript" language="javascript" src="js/Saxonce/Saxonce.nocache.js"></script> 
  <script type="application/xslt+xml" language="xslt2.0" src="support.xsl" data-source="Links.xml"></script>  

<style>
span.pseudo-a { /* Mimic an 'a' element. */
     cursor:pointer;
     color:blue;
     text-decoration:underline;
}
span.pseudo-a:hover {
    color: #444444;    
</style>

</head>

<body>
<form>
  <h3>ACME Corporation - Our Products</h3> 
</form>


<table>
  <tbody>
    <tr>
      <td id="left-pane">
      </td>
      <td id="right-pane">Click an application link on the left-hand panel for more information.
      </td>
    </tr>    
  </tbody>
</table>

</body>
</html>

链接数据文件将如下所示...(相对 url Links.xml

<Links>
  <link>
    <url>Application 1</url>
    <FilePath>app-meta/App1.xml</FilePath>
  </link>
  <link>
    <url>Application 2</url>
    <FilePath>app-meta/App2.xml</FilePath>
  </link >
  <link>
    <url>Application 3</url>
    <FilePath>app-meta/App3.xml</FilePath>
  </link >
</Links>

*... 应用程序特定的文件看起来像这样...(相对 urlapp-meta/App1.xml等)

<Contents>
    <Header> Help Path for Application 1</Header>
    <Summary> This application is used to raise new requests to create User ID&apos;s. It has workflow attached to it which can be used. 
      </Summary>
    <Support>
        <Email>abc@gmail.com </Email>
        <Phone> +1 82828 29282 2727 </Phone>
        <Text> Please contact George in department </Text>
    </Support>
    <FAQS>
        <FAQ>
            <QUESTION> For installation what I should Do</QUESTION>
            <ANSWER> Click on this link. And download the installer. Please note that you need Admin rights for it. </ANSWER>
            <ANSWER> If you are on company network then it can be installed through My Portal </ANSWER>
        </FAQ>
        <FAQ>
            <QUESTION> Question 2</QUESTION>
            <ANSWER> Answer 1 </ANSWER>
            <ANSWER> Answer 2 </ANSWER>
            <ANSWER> Answer 3 </ANSWER>
        </FAQ>
    </FAQS>
</Contents>

此 XSLT 2.0 样式表将根据需要设置您的 xml 数据的样式。(相对网址support.xsl

<xsl:transform
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ixsl="http://saxonica.com/ns/interactiveXSLT"
    xmlns:prop="http://saxonica.com/ns/html-property"
    xmlns:style="http://saxonica.com/ns/html-style-property"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs prop"
    extension-element-prefixes="ixsl"
    version="2.0">

<xsl:template match="*" mode="#all" />

<xsl:template match="/">

  <xsl:result-document href="#left-pane" method="ixsl:replace-content">
    Application List
    <ul>  
      <xsl:apply-templates select="Links/link" mode="left-pane" />   
    </ul>    
  </xsl:result-document>

</xsl:template>

<xsl:template match="link" mode="left-pane">
  <li>
      <span FilePath="{FilePath}" class="pseudo-a">
        <xsl:value-of select="url"/>
      </span>
  </li>      
</xsl:template>

<xsl:template match="span[@FilePath]" mode="ixsl:onclick">
    <xsl:result-document href="#right-pane" method="ixsl:replace-content">
      <xsl:apply-templates select="document(@FilePath)" mode="right-pane" />
    </xsl:result-document>
</xsl:template>

<xsl:template match="Contents" mode="right-pane">
  <h3><xsl:value-of select="Header"/></h3>
    <p><xsl:value-of select="Summary"/></p>
  <h4>For Support</h4>
    <p>Email: <xsl:value-of select="Support/Email" /></p>
    <p>Phone: <xsl:value-of select="Support/Phone" /></p>
    <p><xsl:value-of select="Support/Text" /></p>
  <xsl:apply-templates select="FAQS" mode="#current" />    
</xsl:template>

<xsl:template match="FAQS" mode="right-pane">
  <h4>FAQS</h4>
  <xsl:apply-templates select="FAQ/(QUESTION | ANSWER)" mode="#current" />    
</xsl:template>

<xsl:template match="QUESTION" mode="right-pane">
    <h5><xsl:value-of select="." /></h5>
</xsl:template>

<xsl:template match="ANSWER" mode="right-pane">
    <p><xsl:value-of select="." /></p>
</xsl:template>

</xsl:transform> 

笔记

  1. 要使用 XSLT 2.0,您需要下载Saxon CE javascript 库
  2. 我没有为漂亮的商业级 css 样式付出任何努力。你可以这样做。
  3. 一个纯 XSLT 解决方案将比涉及 ASP.NET 或 PHP 或任何其他重量级垃圾的任何替代解决方案优越几个数量级。代码量是微观的。维护起来会更简单、更便宜。
于 2015-12-17T14:42:46.923 回答