---
layout: nil
---
<?xml version="1.0" encoding="UTF-8"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<urlset
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <url>
    <loc>http://samza.incubator.apache.org/</loc>
    <lastmod>{{ site.time | date: "%Y-%m-%d" }}</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>

  {% for post in site.posts %}
  <url>
    <loc>http://samza.incubator.apache.org{{ post.url }}/</loc>
    <lastmod>{{ post.date | date: "%Y-%m-%d" }}</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.2</priority>
  </url>
  {% endfor %}

  {% for page in site.html_pages %}
  <url>
    <loc>http://samza.incubator.apache.org{{ page.url }}</loc>
    <lastmod>{{ site.time | date: "%Y-%m-%d" }}</lastmod>
    {% if page.changefreq %}<changefreq>{{ page.changefreq }}</changefreq>{% endif %}
    {% if page.priority %}<priority>{{ page.priority }}</priority>{% endif %}
  </url>
  {% endfor %}
</urlset>
